为了账号安全,请及时绑定邮箱和手机立即绑定

在脚本中放置 flask-migrate --multidb 标志的位置?

在脚本中放置 flask-migrate --multidb 标志的位置?

精慕HU 2021-10-26 16:02:57
我需要将多个数据库添加到我基于Miguel Grinberg 的 Flask Mega-Tutorial的旧版本编写的程序中。我配置了几个数据库SQLALCHEMY_BINDS并且它们运行良好,但是当我将它们迁移到新版本时问题就出现了。三个数据库没有得到三个更新版本,而是在我的第一个数据库中折叠成三个表。我从做一些研究中了解到,这是因为 Alembic 感到困惑,并将新版本一起放入第一个数据库中,而其余两个保持不变。我知道我需要添加--multidb 标志来解决这个问题。它通常是初始化的一部分:$ flask db init --multidb但我想知道我把它放在我根据他的教程 ( config.py, db_create.py, db_migrate.py, downgrade.py)编写的脚本中的什么位置。我的猜测可能在db_migrate.py脚本的某个地方?或者也许是__init__.py文件?你能给我一个正确的方向吗?谢谢!迁移.pyimport impfrom migrate.versioning import apifrom app import dbfrom config import SQLALCHEMY_DATABASE_URIfrom config import SQLALCHEMY_MIGRATE_REPOmigration = SQLALCHEMY_MIGRATE_REPO + '/versions/%03d_migration.py' %(api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) + 1)tmp_module = imp.new_module('old_model')old_model = api.create_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)exec old_model in tmp_module.__dict__script = api.make_update_script_for_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, tmp_module.meta, db.metadata)open(migration, "wt").write(script)api.upgrade(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)print 'New migration saved as ' + migrationprint 'Current database version: ' + str(api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO))__init__.pyfrom flask import Flaskfrom flask.ext.socketio import SocketIO, emitfrom flask.ext.sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config.from_object('config')app.config['SECRET_KEY'] = 'shhhhhh!'socketio = SocketIO(app)db = SQLAlchemy(app)from app import views, models
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

旧版本的教程没有使用 Flask-Migrate,它使用基于与 Alembic 不同的迁移工具的本土解决方案。您无法真正将 Flask-Migrate/Alembic 放入这些脚本中,它们完全不兼容。

您可以查看本教程的新版本,特别是第 4 章,以了解如何使用 Flask-Migrate。


查看完整回答
反对 回复 2021-10-26
  • 1 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号