2

我有一个带有MySQL数据库的 Flask 项目,并使用SQLAlchemy作为 ORM 和Flask-Migrate * 进行迁移。

我编写了我的模型,当我运行迁移时,迁移文件是空的,因为现有表超出了Flask-Migrate 的控制,所以我实际上必须删除这些表以让迁移工具检测并再次创建它们。但问题是我不想删除和创建我的表。

那么有没有一种方法可以让我的模型与我现有的表同步?

编辑: 我刚刚发现在 env.py 文件中,可以指定存在的表并且它不会创建这些表:

metadata.reflect(engine, only=["table1", "table2"])

感谢你的回答。

4

1 回答 1

2

根据定义,自动迁移是作为模型和数据库之间的增量生成的。如果您已经有一个在开始使用 Flask-Migrate/Alembic 之前创建的数据库,那么您可以从那时开始跟踪迁移。

如果您想生成一个初始迁移,将您带到当前版本,最简单的方法是按照您的建议删除所有表。为了避免丢失您的数据,我可以提出两个想法:

  • 在删除表之前备份数据库,然后在生成迁移后恢复。
  • 暂时将您的应用程序指向一个空数据库(另一个)。生成迁移后,将其指向您的数据库。

我希望这有帮助。

于 2014-03-13T16:37:32.800 回答