【问题标题】:flask migration script not recognizing the model which are in different folder (with flask-migrate)烧瓶迁移脚本无法识别不同文件夹中的模型(使用烧瓶迁移)
【发布时间】:2019-09-11 11:57:28
【问题描述】:

我来自 Django 背景。在烧瓶中,我正在寻找迁移命令。为此,我应该如何使用迁移脚本。我同样参考了文档(https://flask-migrate.readthedocs.io/en/latest/#using-flask-script)。

我的项目结构是这样的。

  1. 服务
    • 初始化.py
    • 型号
      • 初始化.py
      • employee.py(包含模型声明)
    • manage.py
    • app.py(项目起点)
    • urls.py(用于 url 路由的蓝图)

根据文档,如果我在 manage.py 文件中编写模型,那么它将按预期工作。但是我有模型文件夹,我在其中编写所有模型。因此,如果我点击python3 manage.py db migrate 命令,它不会检测到模型文件中的任何更改。

  • 在模型的 init.py 文件中导入模型。
  • manage.py 文件中的导入模型。

管理.py 文件。

from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager

from app import app, db

migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
    manager.run()

目前它只会在我的数据库中创建 alembic_version 表

这是输出

>> python3 manage.py db migrate
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.env] No changes in schema detected.

【问题讨论】:

    标签: python python-3.x flask


    【解决方案1】:

    我找到了解决方案。默认的 flask-migrate 在我们定义迁移的同一个文件中查找模型(在我的例子中是 manage.py 文件)。

    这里我在我的模型包中创建了模型(包名可以是任何名称)

    要解决这个问题,我们需要执行两个步骤。 1) 在模型包的init.py文件中导入模型。 2) 在我们定义后导入模型

    db = SQLAlchemy(app)

    命令。 该导入语句未使用,但它会告诉 flask-migrate 模型已在模型包中预设。

    【讨论】:

      【解决方案2】:

      尝试运行flask db migrate 命令。如果没有帮助,请尝试在 manage.py 脚本中导入您的模型。

      【讨论】:

      • 它给了我 ModuleNotFoundError 错误。我对烧瓶迁移脚本更感兴趣。感谢您的时间和帮助。 :)
      • 试过了,但没有运气。甚至大多数文档都提到在我不想要的 manage.py 文件中声明您的模型。我想创建我的新模型文件夹。
      • @PranayKhilari,你遇到了什么错误?一旦您在manage.py 中导入模型,它就可以工作。
      • 在 app.py 文件中导入 url 时出现 ModuleNotFoundError 错误。当我尝试使用我不想使用的flask db init commant 时出现错误。我想使用python3 manage.py db init 命令。我所指的文档中提到的所有命令都没有给我任何错误,但它们没有检测到模型包中存在的模型。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      相关资源
      最近更新 更多