我的烧瓶项目在其一些模型定义中使用 sqlalchemy_utils,这会导致迁移错误,例如:
NameError: global name 'sqlalchemy_utils' is not defined
由于此包未在迁移文件中导入。
我想让 flask-migrate / alembic 自动生成将此包导入迁移文件的行,我该如何实现?
我查看了 alembic.ini 和 migrations/env.py - 但对我来说,什么是正确的方法/如果可能的话并不明显。
我的烧瓶项目在其一些模型定义中使用 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.',
...
)
...