我的烧瓶项目在其某些模型定义中使用sqlalchemy_utils,这会导致迁移错误,例如:
NameError: global name 'sqlalchemy_utils' is not defined
由于此程序包未在迁移文件中导入.
我想让flask-migrate/alembic自动生成将此包导入迁移文件的行,我该如何实现?
我看过alembic.ini和migrations/env.py - 但是对我来说,什么是正确的方式/它是否可能是不可能的.
最直接的方法是修改模板以包含该导入.
script.py.mako
:
... from alembic import op import sqlalchemy as sa import sqlalchemy_utils ${imports if imports else ''} ...
如果您有多个提供自定义类型的模块,则可以使用文档中描述的策略.在项目中创建一个导入不同模块的模块,然后将其设置为Alembic应该用于用户类型的前缀.
/myapp/migration_types.py
:
from sqlalchemy_utils import * from myapp.custom_model_type import MyType
script.py.mako
:
... from myapp import migration_types ...
env.py
:
... def run_migrations_online(): ... context.configure( ... user_module_prefix='migration_types.', ... ) ...