如何在全新的应用程序部署中将db与Flask-Migrate同步?

时间:2016-03-17 18:55:35

标签: python flask alembic flask-migrate

将应用程序部署到新服务器(即数据库为空)时,如何正确地将数据库与Flask-Migrate同步?

当我已经有一些架构时,我已经将Flask-Migrate添加到项目中,所以我没有对所有create_table()进行“初始”迁移。现在,当我在部署脚本中manage.py db upgrade时,我得到relation "..." does not exist

是否有任何内置方法可以检测空数据库并运行'create_all()'而不是迁移?这就是Alembic的食谱suggests。由于我正在使用Flask-Migrate,我正在寻找一些处理迁移的统一方法。

1 个答案:

答案 0 :(得分:3)

理想的解决方案是为您的数据库模式生成初始迁移,因为它是您开始使用Flask-Migrate和Alembic跟踪迁移的那一天。

如果你记得当时这样做,这很简单。只需创建一个单独的空数据库(保留真正的数据库),配置您的应用程序以使用空数据库,然后生成迁移。此迁移将具有整个架构。生成迁移后,删除空数据库并将配置恢复回真实数据库。

如果您已经有其他迁移,那么它会变得有点复杂。您将不得不返回要生成初始迁移的代码版本,然后按照上述过程生成它。最后,您需要在迁移列表中插入初始迁移作为第一个。查看一些迁移脚本,以确定每个迁移如何引用前一个迁移脚本。一些小的编辑应该让你开始运行。

如果这似乎工作太多,那么另一种选择是你使用db.create_all()生成数据库直到最新的迁移,然后./manage.py db stamp head告诉Alembic它应该考虑数据库更新。