首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断迁移是否可逆?

如何判断迁移是否可逆?
EN

Stack Overflow用户
提问于 2018-05-31 14:57:32
回答 1查看 2K关注 0票数 3

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

然而,并非所有迁移都是可逆的。如何让自动化流程在应用之前检测所有所需迁移是否是可逆的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 11:59:06

几天后,没有人回答,我继续想出了解决办法。This SO answer是一个很好的起点。

代码语言:javascript
复制
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迁移代码进行更多的工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50627253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档