- pyreindexer.rx_connector
- pyreindexer.query_results
- pyreindexer.transaction
- pyreindexer.point
- pyreindexer.query
- Query
- where
- where_query
- where_subquery
- where_composite
- where_uuid
- where_between_fields
- open_bracket
- close_bracket
- match
- dwithin
- distinct
- aggregate_sum
- aggregate_avg
- aggregate_min
- aggregate_max
- aggregate_facet
- sort
- sort_stpoint_distance
- sort_stfield_distance
- op_and
- op_or
- op_not
- request_total
- cached_total
- limit
- offset
- debug
- strict
- explain
- with_rank
- execute
- delete
- set_object
- set
- drop
- expression
- update
- must_execute
- get
- inner_join
- join
- left_join
- merge
- on
- select
- functions
- equal_position
- Query
- pyreindexer.index_definition
class RxConnector(RaiserMixin)
RxConnector provides a binding to Reindexer upon two shared libraries (hereinafter - APIs): 'rawpyreindexerb.so' and 'rawpyreindexerc.so'. The first one is aimed to a builtin way usage. That API embeds Reindexer, so it could be used right in-place as is. The second one acts as a lightweight client which establishes a connection to Reindexer server via RPC. The APIs interfaces are completely the same.
api (module): An API module loaded dynamically for Reindexer calls
rx (int): A memory pointer to Reindexer instance
err_code (int): The API error code
err_msg (string): The API error message
def close() -> None
Closes an API instance with Reindexer resources freeing
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
def namespace_open(namespace) -> None
Opens a namespace specified or creates a namespace if it does not exist
namespace (string): A name of a namespace
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def namespace_close(namespace) -> None
Closes a namespace specified
namespace (string): A name of a namespace
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def namespace_drop(namespace) -> None
Drops a namespace specified
namespace (string): A name of a namespace
Exception: Raises with an error message when Reindexer instance is not initialized yet
Exception: Raises with an error message of API return on non-zero error code
def namespaces_enum(enum_not_opened=False) -> List[Dict[str, str]]
Gets a list of namespaces available
enum_not_opened (bool, optional): An enumeration mode flag. If it is
set then closed namespaces are in result list too. Defaults to False
(:obj:`list` of :obj:`dict`): A list of dictionaries which describe each namespace
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def index_add(namespace, index_def) -> None
Adds an index to the namespace specified
namespace (string): A name of a namespace
index_def (dict): A dictionary of index definition
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def index_update(namespace, index_def) -> None
Updates an index in the namespace specified
namespace (string): A name of a namespace
index_def (dict): A dictionary of index definition
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def index_drop(namespace, index_name) -> None
Drops an index from the namespace specified
namespace (string): A name of a namespace
index_name (string): A name of an index
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def item_insert(namespace, item_def, precepts=None) -> None
Inserts an item with its precepts to the namespace specified
namespace (string): A name of a namespace
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def item_update(namespace, item_def, precepts=None) -> None
Updates an item with its precepts in the namespace specified
namespace (string): A name of a namespace
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def item_upsert(namespace, item_def, precepts=None) -> None
Updates an item with its precepts in the namespace specified. Creates the item if it not exists
namespace (string): A name of a namespace
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def item_delete(namespace, item_def) -> None
Deletes an item from the namespace specified
namespace (string): A name of a namespace
item_def (dict): A dictionary of item definition
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def meta_put(namespace, key, value) -> None
Puts metadata to a storage of Reindexer by key
namespace (string): A name of a namespace
key (string): A key in a storage of Reindexer for metadata keeping
value (string): A metadata for storage
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def meta_get(namespace, key) -> str
Gets metadata from a storage of Reindexer by key specified
namespace (string): A name of a namespace
key (string): A key in a storage of Reindexer where metadata is kept
string: A metadata value
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def meta_delete(namespace, key) -> None
Deletes metadata from a storage of Reindexer by key specified
namespace (string): A name of a namespace
key (string): A key in a storage of Reindexer where metadata is kept
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def meta_enum(namespace) -> List[str]
Gets a list of metadata keys from a storage of Reindexer
namespace (string): A name of a namespace
(:obj:`list` of :obj:`str`): A list of all metadata keys
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def select(query: str) -> QueryResults
Executes an SQL query and returns query results
query (string): An SQL query
(:obj:`QueryResults`): A QueryResults iterator
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def new_transaction(namespace) -> Transaction
Starts a new transaction and return the transaction object to processing
namespace (string): A name of a namespace
(:obj:`Transaction`): A new transaction
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
ApiError: Raises with an error message of API return on non-zero error code
def new_query(namespace: str) -> Query
Creates a new query and return the query object to processing
namespace (string): A name of a namespace
(:obj:`Query`): A new query
ConnectionError: Raises with an error message when Reindexer instance is not initialized yet
class QueryResults()
QueryResults is a disposable iterator of Reindexer results for such queries as SELECT etc. When the results are fetched the iterator closes and frees a memory of results buffer of Reindexer
api (module): An API module for Reindexer calls
err_code (int): The API error code
err_msg (string): The API error message
qres_wrapper_ptr (int): A memory pointer to Reindexer iterator object
qres_iter_count (int): A count of results for iterations
pos (int): The current result position in iterator
def status() -> None
Check status
ApiError: Raises with an error message of API return on non-zero error code
def count() -> int
Returns a count of results for iterations
int: A count of results
def total_count() -> int
Returns a total or cached count of results
int: A total or cached count of results
def get_agg_results() -> dict
Returns aggregation results for the current query
(:obj:`dict`): Dictionary with all results for the current query
ApiError: Raises with an error message of API return on non-zero error code
def get_explain_results() -> str
Returns explain results for the current query
(string): Formatted string with explain of results for the current query
ApiError: Raises with an error message of API return on non-zero error code
class Transaction()
An object representing the context of a Reindexer transaction
api (module): An API module for Reindexer calls
transaction_wrapper_ptr (int): A memory pointer to Reindexer transaction object
err_code (int): The API error code
err_msg (string): The API error message
def insert(item_def, precepts=None)
Inserts an item with its precepts to the transaction
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def update(item_def, precepts=None)
Updates an item with its precepts to the transaction
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def upsert(item_def, precepts=None)
Updates an item with its precepts to the transaction. Creates the item if it not exists
item_def (dict): A dictionary of item definition
precepts (:obj:`list` of :obj:`str`): A dictionary of index definition
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def delete(item_def)
Deletes an item from the transaction
item_def (dict): A dictionary of item definition
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def commit()
Applies changes
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def commit_with_count() -> int
Applies changes and return the number of count of changed items
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
def rollback()
Rollbacks changes
TransactionError: Raises with an error message of API return if Transaction is over
ApiError: Raises with an error message of API return on non-zero error code
class Point()
An object representing the context of a Reindexer 2D point
x (float): x coordinate of the point
y (float): y coordinate of the point
class Query()
An object representing the context of a Reindexer query
api (module): An API module for Reindexer calls
query_wrapper_ptr (int): A memory pointer to Reindexer query object
err_code (int): The API error code
err_msg (string): The API error message
root (:object: Optional[`Query`]): The root query of the Reindexer query
join_queries (list[:object:`Query`]): The list of join Reindexer query objects
merged_queries (list[:object:`Query`]): The list of merged Reindexer query objects
def where(
index: str,
condition: CondType,
keys: Union[simple_types, tuple[list[simple_types],
...]] = None) -> Query
Adds where condition to DB query with args
index (string): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
keys (union[simple_types, (list[simple_types], ...)]):
Value of index to be compared with. For composite indexes keys must be list,
with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def where_query(
sub_query: Query,
condition: CondType,
keys: Union[simple_types, tuple[list[simple_types],
...]] = None) -> Query
Adds sub-query where condition to DB query with args
sub_query (:obj:`Query`): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
keys (union[simple_types, (list[simple_types], ...)]):
Value of index to be compared with. For composite indexes keys must be list,
with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def where_subquery(index: str, condition: CondType, sub_query: Query) -> Query
Adds sub-query where condition to DB query
index (string): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
sub_query (:obj:`Query`): Field name used in condition clause
(:obj:`Query`): Query object for further customizations
def where_composite(index: str, condition: CondType,
keys: tuple[list[simple_types], ...]) -> Query
Adds where condition to DB query with interface args for composite indexes
index (string): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
keys (list[simple_types], ...): Values of composite index to be compared with (value of each sub-index).
Supported variants:
([1, "test1"], [2, "test2"])
[[1, "test1"], [2, "test2"]])
([1, "testval1"], )
[[1, "testval1"]]
(1, "testval1")
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def where_uuid(index: str, condition: CondType, *uuids: UUID) -> Query
Adds where condition to DB query with UUID as string args.
This function applies binary encoding to the UUID value.
index
MUST be declared as uuid index in this case
index (string): Field name used in condition clause
condition (:enum:`CondType`): Type of condition
uuids (*:obj:`UUID`): Value of index to be compared with. For composite indexes uuids must be list,
with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def where_between_fields(first_field: str, condition: CondType,
second_field: str) -> Query
Adds comparing two fields where condition to DB query
first_field (string): First field name used in condition clause
condition (:enum:`CondType`): Type of condition
second_field (string): Second field name used in condition clause
(:obj:`Query`): Query object for further customizations
def open_bracket() -> Query
Opens bracket for where condition to DB query
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def close_bracket() -> Query
Closes bracket for where condition to DB query
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def match(index: str, *keys: str) -> Query
Adds string EQ-condition to DB query with string args
index (string): Field name used in condition clause
keys (*string): Value of index to be compared with. For composite indexes keys must be list,
with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def dwithin(index: str, point: Point, distance: float) -> Query
Adds DWithin condition to DB query
index (string): Field name used in condition clause
point (:obj:`Point`): Point object used in condition clause
distance (float): Distance in meters between point
(:obj:`Query`): Query object for further customizations
def distinct(index: str) -> Query
Performs distinct for a certain index. Return only items with uniq value of field
index (string): Field name for distinct operation
(:obj:`Query`): Query object for further customizations
def aggregate_sum(index: str) -> Query
Performs a summation of values for a specified index
index (string): Field name for sum operation
(:obj:`Query`): Query object for further customizations
def aggregate_avg(index: str) -> Query
Finds for the average at the specified index
index (string): Field name for sum operation
(:obj:`Query`): Query object for further customizations
def aggregate_min(index: str) -> Query
Finds for the minimum at the specified index
index (string): Field name for sum operation
(:obj:`Query`): Query object for further customizations
def aggregate_max(index: str) -> Query
Finds for the maximum at the specified index
index (string): Field name for sum operation
(:obj:`Query`): Query object for further customizations
def aggregate_facet(*fields: str) -> Query._AggregateFacet
Gets fields facet value. Applicable to multiple data fields and the result of that could be sorted
by any data column or count
and cut off by offset and limit. In order to support this functionality
this method returns AggregationFacetRequest which has methods sort, limit and offset
fields (*string): Fields any data column name or `count`, fields should not be empty
(:obj:`_AggregateFacet`): Request object for further customizations
def sort(
index: str,
desc: bool = False,
forced_sort_values: Union[simple_types, tuple[list[simple_types],
...]] = None
) -> Query
Applies sort order to return from query items. If forced_sort_values argument specified, then items equal to values, if found will be placed in the top positions. Forced sort is support for the first sorting field only
index (string): The index name
desc (bool): Sort in descending order
forced_sort_values (union[simple_types, (list[simple_types], ...)]):
Value of index to match. For composite indexes keys must be list, with value of each sub-index
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def sort_stpoint_distance(index: str, point: Point, desc: bool) -> Query
Applies geometry sort order to return from query items. Wrapper for geometry sorting by shortest distance between geometry field and point (ST_Distance)
index (string): The index name
point (:obj:`Point`): Point object used in sorting operation
desc (bool): Sort in descending order
(:obj:`Query`): Query object for further customizations
def sort_stfield_distance(first_field: str, second_field: str,
desc: bool) -> Query
Applies geometry sort order to return from query items. Wrapper for geometry sorting by shortest distance between 2 geometry fields (ST_Distance)
first_field (string): First field name used in condition
second_field (string): Second field name used in condition
desc (bool): Sort in descending order
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def op_and() -> Query
Next condition will be added with AND. This is the default operation for WHERE statement. Do not have to be called explicitly in user's code. Used in DSL conversion
(:obj:`Query`): Query object for further customizations
def op_or() -> Query
Next condition will be added with OR. Implements short-circuiting: if the previous condition is successful the next will not be evaluated, but except Join conditions
(:obj:`Query`): Query object for further customizations
def op_not() -> Query
Next condition will be added with NOT AND. Implements short-circuiting: if the previous condition is failed the next will not be evaluated
(:obj:`Query`): Query object for further customizations
def request_total() -> Query
Requests total items calculation
total_name (string, optional): Name to be requested
(:obj:`Query`): Query object for further customizations
def cached_total() -> Query
Requests cached total items calculation
total_name (string, optional): Name to be requested
(:obj:`Query`): Query object for further customizations
def limit(limit_items: int) -> Query
Sets a limit (count) of returned items. Analog to sql LIMIT rowsNumber
limit_items (int): Number of rows to get from result set
(:obj:`Query`): Query object for further customizations
def offset(start_offset: int) -> Query
Sets the number of the first selected row from result query
limit_items (int): Index of the first row to get from result set
(:obj:`Query`): Query object for further customizations
def debug(level: LogLevel) -> Query
Changes debug log level on server
level (:enum:`LogLevel`): Debug log level on server
(:obj:`Query`): Query object for further customizations
def strict(mode: StrictMode) -> Query
Changes strict mode
mode (:enum:`StrictMode`): Strict mode
(:obj:`Query`): Query object for further customizations
def explain() -> Query
Enables explain query
(:obj:`Query`): Query object for further customizations
def with_rank() -> Query
Outputs fulltext rank. Allowed only with fulltext query
(:obj:`Query`): Query object for further customizations
def execute() -> QueryResults
Executes a select query
(:obj:`QueryResults`): A QueryResults iterator
ApiError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def delete() -> int
Executes a query, and delete items, matches query
(int): Number of deleted elements
QueryError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def set_object(field: str, values: list[simple_types]) -> Query
Adds an update query to an object field for an update query
field (string): Field name
values (list[simple_types]): List of values to add
(:obj:`Query`): Query object for further customizations
QueryError: Raises with an error message if no values are specified
ApiError: Raises with an error message of API return on non-zero error code
def set(field: str, values: list[simple_types]) -> Query
Adds a field update request to the update request
field (string): Field name
values (list[simple_types]): List of values to add
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def drop(index: str) -> Query
Drops a value for a field
index (string): Field name for drop operation
(:obj:`Query`): Query object for further customizations
def expression(field: str, value: str) -> Query
Updates indexed field by arithmetical expression
field (string): Field name
value (string): New value expression for field
(:obj:`Query`): Query object for further customizations
def update() -> QueryResults
Executes update query, and update fields in items, which matches query
(:obj:`QueryResults`): A QueryResults iterator
QueryError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def must_execute() -> QueryResults
Executes a query, and update fields in items, which matches query, with status check
(:obj:`QueryResults`): A QueryResults iterator
ApiError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def get() -> (str, bool)
Executes a query, and return 1 JSON item
(:tuple:string,bool): 1st string item and found flag
ApiError: Raises with an error message when query is in an invalid state
ApiError: Raises with an error message of API return on non-zero error code
def inner_join(query: Query, field: str) -> Query
Joins 2 queries. Items from the 1-st query are filtered by and expanded with the data from the 2-nd query
query (:obj:`Query`): Query object to left join
field (string): Joined field name. As unique identifier for the join between this query and `join_query`.
Parameter in order for InnerJoin to work: namespace of `query` contains `field` as one of its fields
marked as `joined`
(:obj:`Query`): Query object for further customizations
def join(query: Query, field: str) -> Query
Join is an alias for LeftJoin. Joins 2 queries.
Items from this query are expanded with the data from the query
query (:obj:`Query`): Query object to left join
field (string): Joined field name. As unique identifier for the join between this query and `join_query`
(:obj:`Query`): Query object for further customizations
def left_join(join_query: Query, field: str) -> Query
Joins 2 queries.
Items from this query are expanded with the data from the join_query.
One of the conditions below must hold for field
parameter in order for LeftJoin to work:
namespace of join_query
contains field
as one of its fields marked as joined
query (:obj:`Query`): Query object to left join
field (string): Joined field name. As unique identifier for the join between this query and `join_query`
(:obj:`Query`): Query object for further customizations
def merge(query: Query) -> Query
Merges queries of the same type
query (:obj:`Query`): Query object to merge
(:obj:`Query`): Query object for further customizations
def on(index: str, condition: CondType, join_index: str) -> Query
On specifies join condition
index (string): Field name from `Query` namespace should be used during join
condition (:enum:`CondType`): Type of condition, specifies how `Query` will be joined with the latest join query issued on `Query` (e.g. `EQ`/`GT`/`SET`/...)
join_index (string): Index-field name from namespace for the latest join query issued on `Query` should be used during join
(:obj:`Query`): Query object for further customizations
QueryError: Raises with an error message when query is in an invalid state
def select(*fields: str) -> Query
Sets list of columns in this namespace to be finally selected. The columns should be specified in the same case as the jsonpaths corresponding to them. Non-existent fields and fields in the wrong case are ignored. If there are no fields in this list that meet these conditions, then the filter works as "*"
fields (*string): List of columns to be selected
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def functions(*functions: str) -> Query
Adds sql-functions to query
functions (*string): Functions declaration
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
def equal_position(*equal_position: str) -> Query
Adds equal position fields to arrays queries
equal_poses (*string): Equal position fields to arrays queries
(:obj:`Query`): Query object for further customizations
ApiError: Raises with an error message of API return on non-zero error code
class IndexDefinition(dict)
IndexDefinition is a dictionary subclass which allows to construct and manage indexes more efficiently. NOT IMPLEMENTED YET. USE FIELDS DESCRIPTION ONLY.
name (str): An index name.
json_paths (:obj:`list` of :obj:`str`): A name for mapping a value to a json field.
field_type (str): A type of field. Possible values are: `int`, `int64`, `double`, `string`, `bool`, `composite`.
index_type (str): An index type. Possible values are: `hash`, `tree`, `text`, `-`.
is_pk (bool): True if a field is a primary key.
is_array (bool): True if an index is an array.
is_dense (bool): True if an index is dense. reduce index size. Saves 8 bytes per unique key value for 'hash'
and 'tree' index types.
For '-' index type saves 4-8 bytes per each element. Useful for indexes with high selectivity,
but for tree and hash indexes with low selectivity could
significantly decrease update performance.
is_sparse (bool): True if a value of an index may be not presented.
collate_mode (str): Sets an order of values by collate mode. Possible values are:
`none`, `ascii`, `utf8`, `numeric`, `custom`.
sort_order_letters (str): Order for a sort sequence for a custom collate mode.
config (dict): A config for a fulltext engine.
[More](https://github.com/Restream/reindexer/blob/master/fulltext.md).