python - Flask 迁移(Alembic)不创建迁移

标签 python flask flask-sqlalchemy alembic flask-migrate

我有一个相当大的 Flask 应用程序,我创建新数据表的典型工作流程如下:

我在 models.py 中创建了一个类,如下所示:

class ExampleModel(db.Model):
    __tablename__ = 'example_table'

    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String(100))

然后我运行 flask db migrateflask db upgrade。这些命令后,表就创建好了,我可以正常插入数据了

item = ExampleModel(text='something')
db.session.add(item)
db.session.commit()

到目前为止,我在使用上述工作流程时没有遇到任何问题,甚至在我开始遇到问题之前也是如此。我添加了一个表,然后向其中添加了一些列,基本上只是遇到了可空值和诸如此类的问题(用户错误)。除了删除一些模型类、迁移脚本和手动删除 psql 中的一个表(我使用的是 Postgres)外,我没有做太多其他事情。

现在,我无法从上面执行测试用例 (ExampleModel)。当我尝试这个简单的示例时,没有在迁移目录中创建迁移脚本

flask db migrate 的输出:

INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.

flask db 升级的输出:

INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.

我尝试过的事情:

  • 从 master rebase ,本质上是重新开始
  • 使用上面的测试模型
  • 删除 migrations 目录并创建一个新目录

我的配置和初始化文件应该没问题——自上次运行以来它们没有变化。我被这个难住了

最佳答案

过了一会儿我就能让它工作了。这就是我所做的:

  • 从我的数据库中删除了 alembic_version 表 (DROP)
  • 使用 flask db stamp head 创建了一个新的 alembic_version 表

从那里我能够使用典型的工作流程添加表格。

我将此保留为打开状态,因为我不确定上述方法实际上是否是解决问题的正确方法 - 我可能在处理它时做了其他事情

关于python - Flask 迁移(Alembic)不创建迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69153569/

相关文章:

python - 使用 Flask 上传图片和标签

python - pool_recycle 标志的单位是什么? [SQL炼金术]

python - 当使用 genfromtxt 指定 dtype 时,二维数组变为一维 - 如何防止这种情况?

python - 如何解析包含 "st"、 "nd"、 "rd"或 "th"的日期?

python - 我可以生成 Open API 3 Python Flask 服务器吗?

Flask/SQLAlchemy - 多对多关系的关联模型和关联表之间的区别?

python - MySQL 表不是使用 Flask 和 PyMySQL 创建的

python - 在 Python 中使用 3D 数据实现 2 样本 KS 测试

python - 如何使用 pycassa 和 uuid key 获取数据

python - Flask-Appbuilder 根据用户更改默认登陆页面