xia_engine.engine.Engine
- class xia_engine.engine.Engine
Bases:
BaseEngine- __init__()
Methods
__init__()analyze(document_class, analytic_model)Run the analytic model
backup(document_class[, location, ...])Backup data of a model
compile(document_class, analytic_request[, ...])Compile the analysis request
connect([document_class])Connect to the engine
create(document_class, db_content)Create a document
create_collection(document_class)Create Collection if needed
delete(document_class, doc_id)Delete a document by using id
drop(document_class)Drop the given collection
get(document_class, doc_id)Get Document
get_connection([document_class])Get engine connection。 Always using existed one when it is possible
get_decoder(field[, inner_field])Get Decoder for a field
get_encoder(field[, inner_field])Get Encoder for a field
parse_search_option(key)Reference to search method for the specifications
parse_update_option(key)Reference to update method for the specifications
replicate(document_class, task_list)Data replication
restore(document_class[, location, ...])Restore data of a model
search(document_class, *args, **kwargs)Searching and yield document by document
set(document_class, doc_id, db_content)Overwrite whole document
truncate(document_class)Remove all data from the given collection
update(document_class, doc_id, **kwargs)Update a document
Attributes
search options
order options
update options
Analytic Compiler
Coder to be used to backup / restore
Storer to be used to backup / restore
Engine specific value decoder
Engine specific value encoder
Connector function
Connector Class use an object to handler parameters
if the value is False, each data model will have its own connector by default
default connection parameter
Engine parameter name
Scope check will be performed at engine level (pass document level check)
Unique check will be performed at engine level (pass document level check)
Store embedded document as separate tables
- OPERATORS = {'__eq__': '==', '__ge__': '>=', '__gt__': '>', '__le__': '<=', '__lt__': '<', '__ne__': '!='}
search options
- ORDER_TYPES = {'__asc__': 'asc', '__desc__': 'desc'}
order options
- UPDATE_TYPES = {'__append__': 'append', '__delete__': 'delete', '__remove__': 'remove'}
update options
- classmethod analyze(document_class: Type[BaseDocument], analytic_model: dict)
Run the analytic model
- Parameters
analytic_model – Analyze model
document_class – (subclass of BaseDocument): Document definition
- analyzer = None
Analytic Compiler
- classmethod backup(document_class: Type[BaseDocument], location: Optional[str] = None, data_encode: Optional[str] = None, data_format: Optional[str] = None, data_store: Optional[str] = None, **kwargs)
Backup data of a model
- Parameters
document_class (subclass of BaseDocument) – Document definition4
data_encode (str) – Backup Data Code
data_format (str) – Backup Data Format
data_store (str) – Backup Data Store location
location (str) – Data location to e used by data store
**kwargs – parameter to be passed at engine level
- backup_coder = None
Coder to be used to backup / restore
- backup_storer = None
Storer to be used to backup / restore
- classmethod compile(document_class: Type[BaseDocument], analytic_request: dict, acl_condition=None)
Compile the analysis request
- Parameters
document_class (subclass of BaseDocument) – Document definition
analytic_request – analytic request
acl_condition – User Access List transformed to where conditions
- Returns
Model}
- Return type
A analytic model ready to be executed represented by as dict {Engine
- classmethod connect(document_class: Optional[Type[BaseDocument]] = None)
Connect to the engine
- Parameters
document_class – (subclass of BaseDocument): Document definition
- Returns
Connection
- classmethod create(document_class: Type[BaseDocument], db_content: dict) str
Create a document
- Parameters
document_class (subclass of BaseDocument) – Document definition
db_content (dict) – content to be put to engine
- Returns
Document ID
- classmethod create_collection(document_class: Type[BaseDocument])
Create Collection if needed
- Parameters
document_class – document_class
- decoders = {}
Engine specific value decoder
- classmethod delete(document_class: Type[BaseDocument], doc_id: str)
Delete a document by using id
- Parameters
document_class (subclass of BaseDocument) – Document definition
doc_id – Document ID
- classmethod drop(document_class: Type[BaseDocument])
Drop the given collection
- Parameters
document_class (subclass of BaseDocument) – Document definition
- encoders = {}
Engine specific value encoder
- engine_connector: callable = None
Connector function
- engine_connector_class = None
Connector Class use an object to handler parameters
if the value is False, each data model will have its own connector by default
- engine_default_connector_param: dict = {}
default connection parameter
- engine_param: str = None
Engine parameter name
- engine_scope_check = False
Scope check will be performed at engine level (pass document level check)
- engine_unique_check = False
Unique check will be performed at engine level (pass document level check)
- classmethod get(document_class: Type[BaseDocument], doc_id: str) dict
Get Document
- Parameters
document_class (subclass of BaseDocument) – Document definition
doc_id – Document ID
- Returns
Document content on python dict
- classmethod get_connection(document_class: Optional[Type[BaseDocument]] = None)
Get engine connection。 Always using existed one when it is possible
- Parameters
document_class – (subclass of BaseDocument): Document definition
- Returns
Connection
- classmethod get_decoder(field: type, inner_field: Optional[type] = None) callable
Get Decoder for a field
- Parameters
field (type) – class type of field class
inner_field (type) – class type of inner field (Such qs ListField)
- Returns
Decoder function
- classmethod get_encoder(field: type, inner_field: Optional[type] = None) callable
Get Encoder for a field
- Parameters
field (type) – class type of field class
inner_field (type) – class type of inner field (Such qs ListField)
- Returns
Encoder function
- classmethod parse_search_option(key: str)
Reference to search method for the specifications
- Parameters
key (str) –
- Returns
key, operator, order
- classmethod parse_update_option(key: str)
Reference to update method for the specifications
- Parameters
key (str) –
- Returns
key, update
- classmethod replicate(document_class: Type[BaseDocument], task_list: list)
Data replication
- Parameters
document_class – Python class of document
task_list – List of dictionary with the following keys: * id: document id * content: document db form * op: operation type: “I” for insert, “D” for delete, “U” for update, “L” for load
- Returns
- List of dictionary with the following keys:
id: document id
op: operation type: “I” for insert, “D” for delete, “U” for update, “L” for load
time: time when data is replicated
status: status code of HTTP protocol
- Return type
task_results
- classmethod restore(document_class: Type[BaseDocument], location: Optional[str] = None, data_encode: Optional[str] = None, data_format: Optional[str] = None, data_store: Optional[str] = None, **kwargs)
Restore data of a model
- Parameters
document_class (subclass of BaseDocument) – Document definition
data_encode (str) – Backup Data Code
data_format (str) – Backup Data Format
data_store (str) – Backup Data Store location
location (str) – Data location to e used by data store
**kwargs – parameter to be passed at engine level
- classmethod search(document_class: Type[BaseDocument], *args, **kwargs)
Searching and yield document by document
- Parameters
document_class (subclass of BaseDocument) – Document definition
*args – Unnamed arguments are document id
**kwargs – Named arguments are search string
- Notes for search string:
key, str pair: single value search
key, list pair: array_contains_any search
embedded search: a__b means b component of a. a.b means the key’s name is a.b
- operators: key is end with __op__. The following op are supported:
__eq__: Could ignore because it is a by default behavior
__lt__, __le__, __gt__, __ge__, __ne__: as is supposed by the name
__asc__, __desc__: the result will be ordered by the fields
- Attentions:
The complex query might raise compatible issues
- classmethod set(document_class: Type[BaseDocument], doc_id: str, db_content: dict) str
Overwrite whole document
- Parameters
document_class (subclass of BaseDocument) – Document definition
doc_id – Document ID
db_content – content to be put to engine
- Returns
Document ID
- store_embedded_as_table = False
Store embedded document as separate tables
- classmethod truncate(document_class: Type[BaseDocument])
Remove all data from the given collection
- Parameters
document_class (subclass of BaseDocument) – Document definition
- classmethod update(document_class: Type[BaseDocument], doc_id: str, **kwargs) dict
Update a document
- Parameters
document_class (subclass of BaseDocument) – Document definition
doc_id (str) – Document ID
**kwargs – Named keyword for update
- Returns
Updated data
- Notes for delete string:
embedded update: a__b means b component of a. a.b means the key’s name is a.b
- operators: key is end with __op__. The following op are supported:
__append__: Append an item to array
__remove__: Remove an item
__delete__: Delete the field