Django中数据迁移和简单功能之间的区别

时间:2017-01-05 20:27:45

标签: python django

来自https://docs.djangoproject.com/en/1.10/topics/migrations/#data-migrations

的示例

编写数据迁移并将其迁移到编写修改必要数据的简单函数后,有什么好处?

PostBlog blogPoster = new PostBlog();
try {
    blogPoster.execute(insertBlogURL);
} catch (InterruptedException e) {} catch (ExecutionException e) {}

在这个例子中,我们可以运行下面的代码并运行它。

def combine_names(apps, schema_editor):
    # We can't import the Person model directly as it may be a newer
    # version than this migration expects. We use the historical version.
    Person = apps.get_model("yourappname", "Person")
        for person in Person.objects.all():
            person.name = "%s %s" % (person.first_name, person.last_name)
            person.save()

class Migration(migrations.Migration):
    initial = True

    dependencies = [
        ('yourappname', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(combine_names),
    ]

2 个答案:

答案 0 :(得分:2)

this.userSettingsObservable.onNext(settings) 解决的问题是能够在历史上下文中运行代码,并利用您的历史模型和以前的架构编辑知识。

如果你的迁移,我们会说你在中间遇到错误。现在你有一些迁移的数据和其他没有的数据,而且你手上的问题要大得多。这可能是最大的原因。

请参阅RunPython文档。它还可以帮助您执行其他操作,例如反向迁移和提供迁移提示。

答案 1 :(得分:1)

用于部署目的。很多时候,团队有使用自动化工具部署代码更改的标准流程,因此能够在生产中应用数据更改也需要自动化。您无法通过登录生产服务器来执行您所说的内容,加载shell并在每次发生时运行代码。它打破了部署过程并且容易出错,如果发生了不好的事情,你就不记得你做了什么。

但是,如果您的部署过程具有运行迁移的步骤,并且您只需将代码放在迁移文件中,则可以自动应用它,并且可以跟踪已应用的内容。它也是可测试的,以确保迁移本身没有错误。