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:
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, *, exc=None, read_preference=PrimaryPreferred(tag_sets=None, max_staleness=-1), **collection_params)

Get document for it _id.

Parameters:
  • document_classyadm.documents.Document
  • _id – document’s _id
  • exc (Exception) – raise given exception if not found
  • **collection_params

    params for get_collection

Default ReadPreference is PrimaryPreferred.

get_queryset(document_class, *, cache=None, **collection_params)

Return queryset for document class.

Parameters:
  • document_classyadm.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.

insert(document)

Insert document to database.

Parameters:document (Document) – document instance for insert to database

It’s bind new document to database set _id.

reload(document, new_instance=False, 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)
remove(document)

Remove document from database.

Parameters:document (Document) – instance for remove from database
save(document, full=False, upsert=False)

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)

If document has no _id insert new document.

update_one(document, *, reload=True, set=None, unset=None, inc=None, push=None, pull=None)

Update one document.

Parameters:
  • document (Document) – document instance for update
  • reload (bool) – if True, reload document