我来自Django的背景。在烧瓶中,我正在寻找迁移命令。为此,我应该如何使用迁移脚本。我引用了相同的文档(https://flask-migrate.readthedocs.io/en/latest/#using-flask-script)。
我的项目结构就像。
- manage.py
- app.py (start point of project)
- urls.py (Used blueprint for url routing)
根据文档,如果我用manage.py文件编写了我的模型,那么它就会像预期的那样工作。但是我有“模型”文件夹,在那里我正在编写所有的模型。因此,如果我点击python3 manage.py db migrate
命令,它将不会检测到模型文件中的任何更改。
Manage.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.
发布于 2019-09-12 01:19:00
我找到了解决办法。默认的烧瓶迁移看起来在我们定义迁移的文件中(在我的例子中它是manage.py文件)。
在这里,我在我的模型包中创建了模型(包名可以是任意的)
要解决这个问题,我们需要执行两个步骤。1)在init.py文件中导入模型。2)导入模型在定义完之后
db = SQLAlchemy(app)
命令。导入语句是未使用的,但它会告诉烧瓶迁移,模型是预先设置在模型包中的。
发布于 2019-09-11 04:40:35
尝试运行flask db migrate
命令。如果没有帮助,请尝试导入manage.py脚本中的模型。
https://stackoverflow.com/questions/57888640
复制