gpt4 book ai didi

django - 如何判断迁移是否可逆?

转载 作者:行者123 更新时间:2023-12-05 06:33:41 25 4
gpt4 key购买 nike

在我正在进行的一个项目中,我们针对生产数据库的快照运行了一些测试。对于包括迁移在内的更改,我想应用迁移、运行测试并逆向迁移。

但是,并非所有迁移都是可逆的。我如何才能让一个自动化流程在应用它们之前检测是否所有必需的迁移都是可逆的?

最佳答案

几天没有得到答复后,我继续寻找解决方案。 This SO answer是一个很好的起点。

from django.db.migrations.executor import MigrationExecutor
from django.db import connections, DEFAULT_DB_ALIAS

def are_migrations_reversible(target_migrations, database=DEFAULT_DB_ALIAS):
"""check if all migrations required to reach the target migrations are reversible

`target_migrations` is an iterable of (app_label, migration_name) 2-tuples.
"""
connection = connections[database]
connection.prepare_database()
executor = MigrationExecutor(connection)
migration_plan = executor.migration_plan(list(target_migrations))

return all(
operation.reversible
for (migration, is_backwards) in migration_plan
for operation in migration.operations
)

以上要求确定目标迁移,这可以很容易地从 showmigrations 管理命令的输出中提取,或者通过进一步使用内部 Django 迁移代码来付出更多努力。

关于django - 如何判断迁移是否可逆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50627253/

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