我需要將多個數據庫添加到我基于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。
添加回答
舉報
0/150
提交
取消