Flask 迁移(Alembic)不创建迁移
Flask Migrate (Alembic) Not Creating Migrations
我有一个相当大的 Flask 应用程序,我创建新数据的典型工作流程 tables 如下:
我在models.py中创建了一个class,如下所示:
class ExampleModel(db.Model):
__tablename__ = 'example_table'
id = db.Column(db.Integer, primary_key=True)
text = db.Column(db.String(100))
然后我运行flask db migrate
和flask db upgrade
。这些命令后,table被创建,我可以正常插入数据
item = ExampleModel(text='something')
db.session.add(item)
db.session.commit()
到目前为止,我在使用上述工作流程时没有遇到任何问题,甚至在我开始遇到问题之前也是如此。我添加了一个 table,然后向其中添加了一些列,基本上只是 运行 遇到了可空值和诸如此类的问题(用户错误)。除了删除一些模型 classes、迁移脚本,并手动删除 psql 中的一个 table(我正在使用 Postgres)之外,我没有做太多其他事情。
现在,我无法从上面执行测试用例 (ExampleModel)。当我尝试这个简单的示例时,没有在迁移目录中创建迁移脚本
来自flask db migrate
的输出:
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
来自flask db upgrade
的输出:
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
我尝试过的事情:
- 从 master 变基,本质上是重新开始
- 使用上面的测试模型
- 正在删除
migrations
目录并创建一个新目录
我的配置和初始化文件应该没问题 - 自上次运行以来它们没有改变。我被这个难住了
过了一会儿我就能让它工作了。这就是我所做的:
- 已从我的数据库中删除 alembic_version table (DROP)
- 用
flask db stamp head
创建了一个新的 alembic_version table
从那里我可以使用典型的工作流程添加 tables。
我将此打开,因为我不确定上面的方法是否真的是正确的解决方法 - 我可能在处理它时做了其他事情
我有一个相当大的 Flask 应用程序,我创建新数据的典型工作流程 tables 如下:
我在models.py中创建了一个class,如下所示:
class ExampleModel(db.Model):
__tablename__ = 'example_table'
id = db.Column(db.Integer, primary_key=True)
text = db.Column(db.String(100))
然后我运行flask db migrate
和flask db upgrade
。这些命令后,table被创建,我可以正常插入数据
item = ExampleModel(text='something')
db.session.add(item)
db.session.commit()
到目前为止,我在使用上述工作流程时没有遇到任何问题,甚至在我开始遇到问题之前也是如此。我添加了一个 table,然后向其中添加了一些列,基本上只是 运行 遇到了可空值和诸如此类的问题(用户错误)。除了删除一些模型 classes、迁移脚本,并手动删除 psql 中的一个 table(我正在使用 Postgres)之外,我没有做太多其他事情。
现在,我无法从上面执行测试用例 (ExampleModel)。当我尝试这个简单的示例时,没有在迁移目录中创建迁移脚本
来自flask db migrate
的输出:
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
来自flask db upgrade
的输出:
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
我尝试过的事情:
- 从 master 变基,本质上是重新开始
- 使用上面的测试模型
- 正在删除
migrations
目录并创建一个新目录
我的配置和初始化文件应该没问题 - 自上次运行以来它们没有改变。我被这个难住了
过了一会儿我就能让它工作了。这就是我所做的:
- 已从我的数据库中删除 alembic_version table (DROP)
- 用
flask db stamp head
创建了一个新的 alembic_version table
从那里我可以使用典型的工作流程添加 tables。
我将此打开,因为我不确定上面的方法是否真的是正确的解决方法 - 我可能在处理它时做了其他事情