Python 烧瓶迁移-未检测到新柱的添加

Python 烧瓶迁移-未检测到新柱的添加,python,flask,alembic,Python,Flask,Alembic,很难检测表中的新列。我猜有些东西没有被导入,或者我导入的顺序不正确 该应用程序由一个_uinit__uu.py文件实例化。应用程序的总体目录结构如下: |-static/ |-templates/ |__init__.py |filters.py |models.py |forms.py |utils.py |views.py _u_init__uuuy.py文件的相关部分如下所示: # Import flask and template operators from flask import

很难检测表中的新列。我猜有些东西没有被导入,或者我导入的顺序不正确

该应用程序由一个_uinit__uu.py文件实例化。应用程序的总体目录结构如下:

|-static/
|-templates/
|__init__.py
|filters.py
|models.py
|forms.py
|utils.py
|views.py
_u_init__uuuy.py文件的相关部分如下所示:

# Import flask and template operators
from flask import Flask, render_template, Blueprint
import os
# Import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_uploads import UploadSet, configure_uploads
from flask_mail import Mail
# Define the WSGI application object
app = Flask(__name__)

# Configurations
app.config.from_pyfile(os.path.join('..','config.py'))

# Define the database object which is imported
# by modules and controllers
db = SQLAlchemy(app)
from . import models
migrate = Migrate(app, db,compare_type=True)

mail = Mail(app)
在命令行中,我设置了export\u APP=

我对models.py文件进行了更改,在我的一个表中添加了一个新列

然后我运行命令flaskdb migrate

但是,我从上述命令获得的唯一输出是:

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.

并且没有新的迁移脚本添加到migrations文件夹的versions目录中。这在过去是有效的,我不知道为什么它不再有效。

对于可能正在解决这个问题的人,我做了一些事情来帮助他们:

1升级至flask migrate的最新版本。这为我解决了大部分问题

2如果您有旧的迁移,请将它们移动到一个新文件夹,例如mv migrations/migrations\u old,然后使用flask db init重新初始化迁移。然后对数据库进行所需的更改,并检查是否正确创建了新的迁移脚本


当然,这并不能保证会奏效。我仍然没有解决我的案例的根本问题,但这两个步骤奏效了。

当存在尚未部署的现有迁移时,我遇到了这个问题。运行flask db upgrade后,flask migrate能够检测到新的色谱柱