0

我正在将 mongoengine 与 django 一起使用。

在我的项目 Web 应用程序中,我需要连接至少两台服务器:一台本地用于会话,另一台连接到 mongolab(mongodb 托管服务公司)。

所以..我需要连接本地主机进行会话..同时连接到远处的另一台服务器。

如何在 mongoengine 上实现多个连接?

请给我一些例子。


a Web application   --- connecting ---> localhost for session
                    --- connecting ---> mongolab for application database
4

2 回答 2

1

使用 mongoengine 开发分支。支持带别名的多个 dbconnection。https://github.com/hmarr/mongoengine/commit/8d2bc444bb64265f78f5bf716f773742dddd56c1

请参阅此测试。

https://github.com/hmarr/mongoengine/blob/dev/tests/document.py#L2584

于 2012-01-14T10:32:14.130 回答
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')
于 2018-07-31T11:49:16.783 回答