3

私は Django で mongoengine を使用しており、プロジェクト内で単一のリクエストを処理しながら MongoDB の 2 つのインスタンスに接続する必要があります。私が使用する場合、それはうまく動作します:

connect("mdb1")
#do stuff with mdb1
...
connect("mdb2")
#do stuff with mdb2

しかし、それが適切な方法であるかどうか疑問に思っています。

4

3 に答える 3

12

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"}
于 2012-03-24T21:57:44.593 に答える
2

公式ドキュメントの@Ricardoには、コンテキスト管理を説明するセクションがあります(つまり、同じドキュメントを使用してデータベースを切り替える: http://docs.mongoengine.org/guide/connecting.html#switch-database )。次のコードは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'
于 2015-08-31T15:05:04.450 に答える
0

これを行う適切な方法はないと思います。Matt の例では、ドキュメント タイプによる接続の使用が義務付けられています。多くの接続を持つ 1 つのドキュメントを使用したい場合、この例は適切ではありません。

于 2013-04-18T18:54:50.833 に答える