我无法让 Alembic 使用db.Model
(Flask-SQLAlchemy) 而不是Base
.
我已经修改env.py
以创建我的 Flask 应用程序,导入所有相关模型,初始化数据库,然后运行迁移:
...
uri = 'mysql://user:password@host/dbname?charset=utf8'
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = uri
app.config['SQLALCHEMY_ECHO'] = True
db.init_app(app)
with app.test_request_context():
target_metadata = db.Model.metadata
config.set_main_option('sqlalchemy.url', uri)
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()
...
这种方法适用于drop_all()
, create_all()
(例如,在为单元测试重新创建测试数据库时),但在这种情况下它似乎失败了。自动生成的版本脚本总是有空的升级和降级方法,例如,
def upgrade():
### commands auto generated by Alembic - please adjust! ###
pass
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
pass
### end Alembic commands ###
我的更改包括重命名列、更改列定义等,而不仅仅是更改索引和外键。
有人在使用 Alembic 和 Flask-SQLAlchemy 吗?知道我哪里出错了吗?
非常感谢!