当前位置:  开发笔记 > 编程语言 > 正文

如何在flask-migrate迁移中自动导入模块

如何解决《如何在flask-migrate迁移中自动导入模块》经验,为你挑选了1个好方法。

我的烧瓶项目在其某些模型定义中使用sqlalchemy_utils,这会导致迁移错误,例如:

NameError: global name 'sqlalchemy_utils' is not defined

由于此程序包未在迁移文件中导入.

我想让flask-migrate/alembic自动生成将此包导入迁移文件的行,我该如何实现?

我看过alembic.ini和migrations/env.py - 但是对我来说,什么是正确的方式/它是否可能是不可能的.



1> davidism..:

最直接的方法是修改模板以包含该导入.

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.',
        ...
    )
...

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有