在 Flask 中,我设置了 SQLAlchemy 以使用多个数据库,这些数据库是根据请求选择的,如中所述https://quanttype.net/posts/2016-03-15-flask-sqlalchemy-and-multitenancy.html https://quanttype.net/posts/2016-03-15-flask-sqlalchemy-and-multitenancy.html
因此,SQLAlchemy 配置了 SQLALCHEMY_BINDS,以将传入请求重定向到正确的数据库。
我正在尝试让 Alembic 使用多个数据库。例如。 models.py 中的模型在所有数据库中应该相同。
据我所知,alembic multidb仅适用于模型中的bind_key来指定应在哪个数据库中创建哪个表,但我想一次性创建所有数据库中的所有表。我怎么做?
Alembic 提供了一个用于多个数据库的模板:
alembic init --template multidb ./multidb
对于您的特定用例:
1 - 修改alembic.ini
以及您的数据库名称和 SQLAlchemy URL
#alembic.ini
databases = engine1, engine2
[engine1]
sqlalchemy.url = driver://user:pass@localhost/dbname
[engine2]
sqlalchemy.url = driver://user:pass@localhost/dbname2
注意:如果您不想公开密码,请在运行时生成 SQLAlchemy URLenv.py
反而。
2 - 点全部target_metadata
in multidb/env.py
到同一个模型
# env.py
from models import mymodel
target_metadata = {
"engine1": mymodel.Base.metadata,
"engine2": mymodel.Base.metadata,
}
注意:如果您有很多数据库,可能最好以编程方式执行此操作。
3 - 测试 Alembic 设置
alembic revision --autogenerate -m "test"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)