Flask-Migrate,如果存在则不创建表

时间:2014-03-13 10:38:00

标签: python flask migration flask-sqlalchemy flask-migrate

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

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

那么有什么方法可以将我的模型与现有的表同步?

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

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

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

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

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

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

我希望这会有所帮助。