python – 将数据库迁移从sqlalchemy-migrate更改为Flask-Migrate

python – 将数据库迁移从sqlalchemy-migrate更改为Flask-Migrate,第1张

概述我有一个基于 miguel flask tutorial 的网络应用程序 所以我使用sqlalchemy-migrate作为数据库,现在我应该在迁移中使用Alembic如何进行配置?有什么办法我可以从sqlalchemy-migrate更改为Flask-Migrate吗?(因为我的应用程序已经完成并且再次执行它是如此多的工作)Thanx db_migrate.py : #!flask/bin/py 我有一个基于 miguel flask tutorial 的网络应用程序

所以我使用sqlalchemy-migrate作为数据库,现在我应该在迁移中使用Alembic如何进行配置?有什么办法我可以从sqlalchemy-migrate更改为Flask-Migrate吗?(因为我的应用程序已经完成并且再次执行它是如此多的工作)Thanx

db_migrate.py :

#!flask/bin/pythonimport impfrom migrate.versioning import APIfrom app import dbfrom config import sqlALCHEMY_DATABASE_URIfrom config import sqlALCHEMY_MIGRATE_REPOmigration = sqlALCHEMY_MIGRATE_REPO + '/versions/%03d_migration.py' % (API.db_version(sqlALCHEMY_DATABASE_URI,sqlALCHEMY_MIGRATE_REPO) + 1)tmp_module = imp.new_module('old_model')old_model = API.create_model(sqlALCHEMY_DATABASE_URI,sqlALCHEMY_MIGRATE_REPO)exec old_model in tmp_module.__dict__script = API.make_update_script_for_model(sqlALCHEMY_DATABASE_URI,sqlALCHEMY_MIGRATE_REPO,tmp_module.Meta,db.Metadata)open(migration,"wt").write(script)API.upgrade(sqlALCHEMY_DATABASE_URI,sqlALCHEMY_MIGRATE_REPO)print 'New migration saved as ' + migrationprint 'Current database version: ' + str(API.db_version(sqlALCHEMY_DATABASE_URI,sqlALCHEMY_MIGRATE_REPO))
解决方法 有三种可能的方法可以解决这个问题,其中两种相对容易,但最后一种方法非常费力:

1.仅使用Flask-Migrate跟踪未来的迁移

这是最简单的,但不那么有趣.只需像安装新项目一样安装和设置Flask-Migrate,下次需要迁移时,请使用它而不是sqlalchemy-migrate.

缺点是Alembic不会记录当前的迁移状态,只会记录您将来应用的迁移.

2.将数据库的当前状态跟踪为单个初始迁移

这改进了先前的方法并使Flask-Migrate的存储库完整,但是sqlalchemy-migrate中的所有迁移都折叠为Alembic的单个迁移.

过程如下:

>创建Flask-Migrate存储库
>如果您愿意,请备份数据库中的数据(下一步将丢失它!)
>使用教程中的db_downgrade.py脚本,将数据库设置为版本0(空数据库).
>使用Flask-Migrate生成迁移.此迁移将包括所有数据库更改,直到当前版本.
>将数据还原到数据库.
>通常使用Flask-Migrate应用未来的迁移.您可以删除sqlalchemy-migrate存储库,因为所有数据库更改现在都在Alembic中.

3.将整个迁移历史记录传输到Flask-Migrate

这是最复杂的解决方案,因为它要求sqlalchemy-migrate中的每次迁移都要单独转移到Alembic.

过程如下:

>创建Flask-Migrate存储库
>如果您愿意,将数据库设置为版本0(空数据库).或者如果更容易,只需手动删除数据库中的所有表.
>假设您的源代码控制上有应用程序,请检查与您的第一次数据库迁移相匹配的代码版本.
>使用Flask-Migrate生成迁移.此迁移将与您的第一次sqlalchemy-migrate迁移相同.
>签出与第二个sqlalchemy-migrate迁移匹配的代码版本.
>使用Flask-Migrate生成第二次迁移.此迁移将与您的第二次sqlalchemy-migrate迁移相同.
>继续这样,直到达到当前版本的代码和最后一次数据库迁移.
>将数据还原到数据库.
>通常使用Flask-Migrate应用未来的迁移.您可以删除sqlalchemy-migrate存储库,因为所有数据库更改现在都在Alembic中.

如果您需要推荐,我认为在大多数情况下#2是最佳选择.如果我预计我需要将我的数据库降级到历史上的特定迁移,我只会经历#3的痛苦.

总结

以上是内存溢出为你收集整理的python – 将数据库迁移从sqlalchemy-migrate更改为Flask-Migrate全部内容,希望文章能够帮你解决python – 将数据库迁移从sqlalchemy-migrate更改为Flask-Migrate所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1193282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存