Skip to content

Restream/reindexer-py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyreindexer

The pyreindexer module provides a connector and its auxiliary tools for interaction with Reindexer.

pyreindexer.rx_connector

RxConnector

RxConnector(self, dsn)

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.

Attributes:

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

close

RxConnector.close(self)

Closes an API instance with Reindexer resources freeing

Returns:

None

namespace_open

RxConnector.namespace_open(self, namespace)

Opens a namespace specified or creates a namespace if it does not exist

Arguments:

namespace (string): A name of a namespace

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

namespace_close

RxConnector.namespace_close(self, namespace)

Closes a namespace specified

Arguments:

namespace (string): A name of a namespace

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

namespace_drop

RxConnector.namespace_drop(self, namespace)

Drops a namespace specified

Arguments:

namespace (string): A name of a namespace

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

namespaces_enum

RxConnector.namespaces_enum(self, enum_not_opened=False)

Gets a list of namespaces available

Arguments:

enum_not_opeden (bool, optional): An enumeration mode flag. If it is
    set then closed namespaces are in result list too. Defaults to False.

Returns:

(:obj:`list` of :obj:`dict`): A list of dictionaries which describe each namespace.

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

index_add

RxConnector.index_add(self, namespace, index_def)

Adds an index to the namespace specified

Arguments:

namespace (string): A name of a namespace
index_def (dict): A dictionary of index definiton

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

index_update

RxConnector.index_update(self, namespace, index_def)

Updates an index in the namespace specified

Arguments:

namespace (string): A name of a namespace
index_def (dict): A dictionary of index definiton

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

index_drop

RxConnector.index_drop(self, namespace, index_name)

Drops an index from the namespace specified

Arguments:

namespace (string): A name of a namespace
index_name (string): A name of an index

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

item_insert

RxConnector.item_insert(self, namespace, item_def, precepts=[])

Inserts an item with its precepts to the namespace specified.

Arguments:

namespace (string): A name of a namespace
item_def (dict): A dictionary of item definiton
precepts (:obj:`list` of :obj:`str`): A dictionary of index definiton

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

item_update

RxConnector.item_update(self, namespace, item_def, precepts=[])

Updates an item with its precepts in the namespace specified.

Arguments:

namespace (string): A name of a namespace
item_def (dict): A dictionary of item definiton
precepts (:obj:`list` of :obj:`str`): A dictionary of index definiton

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

item_upsert

RxConnector.item_upsert(self, namespace, item_def, precepts=[])

Updates an item with its precepts in the namespace specified. Creates the item if it not exist.

Arguments:

namespace (string): A name of a namespace
item_def (dict): A dictionary of item definiton
precepts (:obj:`list` of :obj:`str`): A dictionary of index definiton

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

item_delete

RxConnector.item_delete(self, namespace, item_def)

Deletes an item from the namespace specified.

Arguments:

namespace (string): A name of a namespace
item_def (dict): A dictionary of item definiton

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

commit

RxConnector.commit(self, namespace)

Flushes changes to a storage of Reindexer

Arguments:

namespace (string): A name of a namespace

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

meta_put

RxConnector.meta_put(self, namespace, key, value)

Puts metadata to a storage of Reindexer by key

Arguments:

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

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

meta_get

RxConnector.meta_get(self, namespace, key)

Gets metadata from a storage of Reindexer by key specified

Arguments:

namespace (string): A name of a namespace
key (string): A key in a storage of Reindexer where metadata is kept

Returns:

string: A metadata value

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

meta_enum

RxConnector.meta_enum(self, namespace)

Gets a list of metadata keys from a storage of Reindexer

Arguments:

namespace (string): A name of a namespace

Returns:

(:obj:`list` of :obj:`str`): A list of all metadata keys.

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

select

RxConnector.select(self, query)

Executes an SQL query and returns query results

Arguments:

query (string): An SQL query

Returns:

(:obj:`QueryResults`): A QueryResults iterator.

Raises:

Exception: Raises with an error message of API return if Reindexer instance is not initialized yet.
Exception: Raises with an error message of API return on non-zero error code.

pyreindexer.query_results

QueryResults

QueryResults(self, api, qres_wrapper_ptr, qres_iter_count)

QueryResults is a disposable iterator of Reindexer results for such queries as SELECT and etc. When the results are fetched the iterator closes and frees a memory of results buffer of Reindexer

Attributes:

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

count

QueryResults.count(self)

Returns a count of results

Returns

int: A count of results

pyreindexer.index_definition

IndexDefinition

IndexDefinition(self, /, *args, **kwargs)

IndexDefinition is a dictionary subclass which allows to construct and manage indexes more efficiently. NOT IMPLEMENTED YET. USE FIELDS DESCRIPTION ONLY.

Arguments:

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 a 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) .