mongoengine 多个连接示例?
我在用django搭配mongoengine。
在我的项目网页应用中,我需要连接至少两个服务器:一个是本地的,用来处理会话,另一个是连接到mongolab(一个提供mongodb托管服务的公司)。
所以,我需要连接本地服务器来处理会话,同时又要连接到远程的另一个服务器。
我该如何在mongoengine中实现多个连接呢?
请给我一些例子。
a Web application --- connecting ---> localhost for session
--- connecting ---> mongolab for application database
2 个回答
1
根据mongoengine的文档,如果你想使用多个数据库,可以用connect()
这个方法,并给连接起个别名。在后台,这个方法会用register_connection()
来存储数据,如果需要的话,你可以提前注册所有的别名。
connect(alias='user-db-alias', db='user-db')
connect(alias='book-db-alias', db='book-db')
connect(alias='users-books-db-alias', db='users-books-db')
class User(Document):
name = StringField()
meta = {'db_alias': 'user-db-alias'}
class Book(Document):
name = StringField()
meta = {'db_alias': 'book-db-alias'}
class AuthorBooks(Document):
author = ReferenceField(User)
book = ReferenceField(Book)
meta = {'db_alias': 'users-books-db-alias'}
你还可以使用switch_db()
这个方法来切换数据库。
如果你想断开某个特定的连接,可以用disconnect()这个函数。这个函数可以用来全局改变连接:
from mongoengine import connect, disconnect
connect('a_db', alias='db1')
class User(Document):
name = StringField()
meta = {'db_alias': 'db1'}
disconnect(alias='db1')
connect('another_db', alias='db1')
1
使用mongoengine的开发版本。这个版本支持多个数据库连接,并且可以使用别名。你可以查看这个链接了解更多信息:https://github.com/hmarr/mongoengine/commit/8d2bc444bb64265f78f5bf716f773742dddd56c1
可以看看这些测试案例。
测试的具体内容在这里:https://github.com/hmarr/mongoengine/blob/dev/tests/document.py#L2584