Database¶
This module for provide work with MongoDB database.
import pymongo
from yadm.database import Database
from mydocs import Doc
client = pymongo.MongoClient("localhost", 27017)
db = Database(self.client, 'test')
doc = Doc()
db.insert(doc)
doc.arg = 13
db.save(doc)
qs = db.get_queryset(Doc).find({'arg': {'$gt': 10}})
for doc in qs:
print(doc)
-
class
yadm.database.
Database
(client, name)¶ Main object who provide work with database.
Parameters: - client (pymongo.Client) – database connection
- name (str) – database name
-
aggregate
(document_class, *, pipeline=None, **collection_params)¶ Return aggregator for use aggregation framework.
Parameters: - document_class –
yadm.documents.Document
- pipeline (list) – initial pipeline
- **collection_params –
params for get_collection
- document_class –
-
bulk
(document_class, *, ordered=False, raise_on_errors=True, **collection_params)¶ Return Bulk.
Parameters: - document_class (MetaDocument) – class of documents fo bulk
- ordered (bool) – create ordered bulk (default False)
- raise_on_errors (bool) – raise BulkWriteError exception if write errors (default True)
- **collection_params –
params for get_collection
Context manager:
- with db.bulk(Doc) as bulk:
- bulk.insert(doc_1) bulk.insert(doc_2)
-
get_document
(document_class, _id, *, projection=None, exc=None, read_preference=PrimaryPreferred(tag_sets=None, max_staleness=-1), **collection_params)¶ Get document for it _id.
Parameters: - document_class –
yadm.documents.Document
- _id – document’s _id
- projection (dict) – projection for query
- exc (Exception) – raise given exception if not found
- **collection_params –
params for get_collection
Default ReadPreference is PrimaryPreferred.
- document_class –
-
get_queryset
(document_class, *, projection=None, cache=None, **collection_params)¶ Return queryset for document class.
Parameters: - document_class –
yadm.documents.Document
- cache – cache for share with other querysets
- **collection_params –
params for get_collection
This create instance of
yadm.queryset.QuerySet
with presetted document’s collection information.- document_class –
-
insert
(document, **collection_params)¶ Insert document to database.
Parameters: document (Document) – document instance for insert to database It’s bind new document to database set
_id
. :param **collection_params: params for get_collection
-
reload
(document, new_instance=False, *, projection=None, read_preference=PrimaryPreferred(tag_sets=None, max_staleness=-1), **collection_params)¶ Reload document.
Parameters: - document (Document) – instance for reload
- new_instance (bool) – if True return new instance of document, else change data in given document (default: False)
- projection (dict) – projection for query
- **collection_params –
params for get_collection
-
remove
(document, **collection_params)¶ Remove document from database.
Parameters: - document (Document) – instance for remove from database
- **collection_params –
params for get_collection
-
save
(document, full=False, upsert=False, **collection_params)¶ Save document to database.
Parameters: - document (Document) – document instance for save
- full (bool) – fully resave document (default: False)
- upsert (bool) – see documentation for MongoDB’s update (default: False)
- **collection_params –
params for get_collection
If document has no _id
insert
new document.