合并 MongoDb 个客户端:pyMongo 和 MongoEngine
Combine MongoDb clients: pyMongo and MongoEngine
在我的 Web 应用程序中,我使用 Flask
作为框架,使用 MongoDB
作为持久层。有多个图书馆连接到 MongoDB
。我目前正在使用低级库 pyMongo
。但是,对于某些型号,我想将它与 MongoEngine
结合使用。
我看到的唯一方法是创建两个客户端的实例。这看起来是一只大狗。是否有更简单的方法来组合这些库(pyMongo
、MongoEngine
),以便它们使用相同的数据库(具有不同的集合)。
目前无法使用现有的 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')
在我的 Web 应用程序中,我使用 Flask
作为框架,使用 MongoDB
作为持久层。有多个图书馆连接到 MongoDB
。我目前正在使用低级库 pyMongo
。但是,对于某些型号,我想将它与 MongoEngine
结合使用。
我看到的唯一方法是创建两个客户端的实例。这看起来是一只大狗。是否有更简单的方法来组合这些库(pyMongo
、MongoEngine
),以便它们使用相同的数据库(具有不同的集合)。
目前无法使用现有的 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')