Объединение клиентов MongoDb: pyMongo и MongoEngine - PullRequest
0 голосов
/ 31 октября 2019

В своем веб-приложении я использую Flask в качестве основы и MongoDB в качестве постоянного слоя. Есть несколько библиотек для подключения к MongoDB. В настоящее время я использую низкоуровневую библиотеку lib pyMongo. Однако я хотел бы объединить его с MongoEngine для некоторых моделей.

Единственный подход, который я вижу, - это создать экземпляр обоих клиентов. Это выглядит большой собачкой. Есть ли более простой способ объединить эти библиотеки (pyMongo, MongoEngine) так, чтобы они использовали одну и ту же базу данных (с разными коллекциями).

1 Ответ

0 голосов
/ 31 октября 2019

В настоящее время невозможно использовать существующий клиент Pymongo для подключения MongoEngine, но вы можете сделать наоборот;если вы подключите MongoEngine, вы можете получить его базовый клиент Pymongo или экземпляры базы данных.

from mongoengine import connect, get_db, Document, StringField

conn = connect()    # connects to the default "test" database on localhost:27017

print(conn)    # pymongo.MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary())

db = get_db()  # pymongo.Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary()), u'test')
print(db)

class Person(Document):
    name = StringField()


coll = Person._get_collection()
print(coll)    # pymongo.Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary()), u'test'), u'person')
...