Bob*_*dan 6 sqlalchemy flask alembic flask-migrate
我正在开发环境中使用具有约 80 个表的 Postgres 10 数据库的烧瓶应用程序。有很多关系和 ForeignKeyConstraints 将它们连接在一起。
它与 Flask-Migrate 一起工作得很好。我已经引导并迁移到了大约 80 个表。但是,我想测试一些新脚本来为数据库表设置种子,并认为删除数据库并使用 Flask-Migrate 再次将其恢复是最快的。
在这个过程中,迁移文件夹被删除了,所以我只是用一个db init. 然后跑了db migrate。我在迁移脚本中手动修复了一些导入。最后,我跑了db upgrade。
但是,现在create_table我的迁移脚本中有所有这 80 个命令,当我运行时db_upgrade,我收到一个错误:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "items" does not exist
Run Code Online (Sandbox Code Playgroud)
如果子表的顺序不在迁移文件中的父表之下,我会收到每个具有 ForeignKeyConstraint 的子表的错误。
但是,自动生成的脚本db migrate中的表按字母顺序排序,按表名排序。
参考文档,我没有看到提到排序顺序的重要性。
最重要的是,我似乎要么被迫编写一个脚本来按父表位于子表上方的顺序对所有这些表进行排序。否则,只需像拼图游戏一样剪切和粘贴,直到所有表格都按所需顺序排列。
我错过了什么?使用 Flask-Migrate 或 Alembic 是否有更简单的方法来做到这一点?
经过研究后,似乎 Flask-migrate 和/或 Alembic 没有任何内置方法来解决这种排序顺序问题。我通过按顺序剪切和粘贴表来修复此问题,确保父表位于迁移文件中的子表上方。
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |