我正在使用mongoengine和Django,並且在我的項目中需要在提供單個請求時連接到兩個MongoDB實例。從django連接到多個mongodb實例
connect("mdb1")
#do stuff with mdb1
...
connect("mdb2")
#do stuff with mdb2
但我想知道,如果這就是做這件事的正確方法:如果我用它工作得很好。
我正在使用mongoengine和Django,並且在我的項目中需要在提供單個請求時連接到兩個MongoDB實例。從django連接到多個mongodb實例
connect("mdb1")
#do stuff with mdb1
...
connect("mdb2")
#do stuff with mdb2
但我想知道,如果這就是做這件事的正確方法:如果我用它工作得很好。
Multiple database支撐在MongoEngine加入0.6
演示使用register_connection
。
alias_lists = ['users-books-db', 'user-db', 'book-db'] # list of aliases
dbs = ['author-book-pairs', 'users', 'books'] # list of databases
for alias, db in zip(alias_lists, dbs):
register_connection(alias, db)
class User(Document):
name = StringField()
meta = {"db_alias": "user-db"}
class Book(Document):
name = StringField()
meta = {"db_alias": "book-db"}
class AuthorBooks(Document):
author = ReferenceField(User)
book = ReferenceField(Book)
meta = {"db_alias": "users-books-db"}
雖然有一件事...這不適用於DynamicDocuments,尤其是,當元數據需要在運行時動態添加時 – qre0ct 2017-04-27 09:29:05
我認爲那裏s no a proper way to do this. The example of Matt turns obrigatory use an connection by Document type. If i want to use one document with many connections the example don
噸適合。
@Ricardo官方文檔裏有一節解釋上下文管理(即使用相同文檔切換數據庫:http://mongoengine-odm.readthedocs.org/en/latest/guide/connecting.html#context-managers)。 下面的代碼將在類User
,原本儲存在users-db
切換到新的數據庫archive-user-db
from mongoengine.context_managers import switch_db
class User(Document):
name = StringField()
meta = {"db_alias": "user-db"}
with switch_db(User, 'archive-user-db') as User:
User(name="Ross").save() # Saves the 'archive-user-db'
除了源URL之外,還應該包含相關信息 – winwaed 2015-08-31 15:22:20
什麼是什麼問題?什麼是問題?如果沒有在* some *點明確打開數據庫連接,你還想連接到任何數據庫嗎? – 2011-05-20 05:54:44