gpt4 book ai didi

python - 如何在多个开发环境中使用 Flask-migrate

转载 作者:行者123 更新时间:2023-12-04 01:56:05 25 4
gpt4 key购买 nike

我有flask-migrate(版本1.8.0)在开发环境中与sqlite数据库配合良好。现在我想将我们的数据迁移到 MySQL 并维护我们所有的迁移历史(因此它与我们 git 存储库中的 Flask-SQLAlchemy 模型保持同步)。

我创建了一个空的 MySQL 数据库,在更改了 SQLALCHEMY_DATABASE_URI 后,我尝试运行:

python manage.py db upgrade

这导致了无法删除表 migrate_version 的错误。 (这是有道理的,因为这是一个新数据库,尽管 sqlite 实际上包含表 'alembic_version' 而不是 'migrate_version'。)

所以,我尝试初始化这个新数据库:
python manage.py db init

现在我收到一个错误:“目录迁移已经存在”。

我可以重命名该文件夹并毫无问题地重新运行该命令,但随后我丢失了所有以前的迁移。我认为当我们也过渡到我们的测试和生产环境时,我们也会遇到同样的问题。

我在文档中看到 Flask-Migrate 有多个数据库支持,但我认为这看起来更适合在单个开发环境中维护多个数据库。有没有办法让 Flask-Migrate 跨多个开发环境跟踪更改?

最佳答案

要解决 OP 问题中的实际问题,您需要使用 --directory 标志来启动特定于每个环境数据库的迁移目录。

从 flask 迁移文档:

All commands also take a --directory DIRECTORY option that points to the directory containing the migration scripts. If this argument is omitted the directory used is migrations.



所以:
flask db init --directory=[DIRECTORY NAME]

Flask-Migrate 本身没有你的数据库内存,所以当使用 flask db 运行迁移命令时,它将引用指定的迁移目录(默认情况下,当 --directory 标志未使用时,这称为“迁移”)。
flask db migrate --directory=[DIRECTORY_NAME]

等等。

不用说,flask 命令将引用由您的配置文件或环境变量配置的应用程序上下文。

我通常为每个环境创建一个迁移目录,并明确引用环境:例如开发和分期,类似“migrations_dev”和“migrations_stg”。

希望这是有帮助的。

关于python - 如何在多个开发环境中使用 Flask-migrate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36208977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com