我有一个 Flask 应用程序,其Post
模型跨越多个 MongoDB 数据库(db1、db2、db3...),所以我需要能够查询不同的数据库。
我正在使用Flask-MongoEngine
扩展程序。
我的__init__.py
包含以下行:
db = MongoEngine(app)
并且在config.py
我有:
MONGODB_SETTINGS = {'DB': 'db1'}
我尝试了以下但没有成功:
- 像这样改变对象中的
connection
参数db
:
db.connection = mongoengine.connect('db2')
它没有改变任何东西。执行post = Post.objects.all()
仍然在原始 db (db1
) 上运行。 Post
像这样在类中创建别名meta
:
'db_alias': 'db1'
然后我像这样更改对象connection
中的参数db
:
db.connection = mongoengine.connect('db2', alias='db1')
这确实会创建到 的连接db2
,但我无法将其更改为另一个数据库。- 设置
MONGODB_SETTINGS
为{'DB': 'db2'}
然后db = MongoEngine(app)
这也不起作用
似乎一旦models.py
加载了模型(或连接到数据库),您就无法更改其连接。
那是对的吗?
如何更改同一模型上的数据库?
编辑:Django 等效项是using
ORM 中的参数,它允许为同一模型查询不同的数据库。