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

War*_*ick 2 python flask alembic flask-migrate

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

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

是否有任何内置方法来检测空数据库并运行“create_all()”而不是迁移?这就是 Alembic's Cookbook 的建议。由于我已经在使用 Flask-Migrate,因此我正在寻找某种统一的处理迁移方式。

Mig*_*uel 5

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

如果您当时记得这样做,那么这样做很简单。只需创建一个单独的空数据库(不要管你的真实数据库),将你的应用程序配置为使用空数据库,然后生成一个迁移。此迁移将具有整个架构。生成迁移后,摆脱空数据库并将配置恢复到真实数据库。

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

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