迁移

作者: 蝉时雨丶 | 来源:发表于2020-06-25 11:32 被阅读0次

迁移是 Django 将你对模型的修改(例如增加一个字段,删除一个模型)应用至数据库表结构对方式。它们被设计的尽可能自动化,但你仍需要知道何时构建和运行迁移,你还需要了解一些常见问题。

命令

以下是几个常用的与迁移交互的命令,即 Django 处理数据库表结构的方式:

你应该将迁移看作是数据库表结构的版本控制系统。 makemigrations 负责将模型修改打包进独立的迁移文件中——类似提交修改,而 migrate 负责将其应用至数据库。

每个应用的迁移文件位于该应用的 "migrations" 目录中,他们被设计成应用代码的一部分,与应用代码一起被提交,被发布。你只需在开发机上构建一次,就可以在同事的电脑或测试机上运行同样的迁移而保证结果一致。最后在生产环境运行同样的迁移。

注解

通过修改配置 MIGRATION_MODULES 可以重写包含迁移的应用的包名。

从同样的数据集合运行迁移在开发、测试和生产环境都会生成同样的结果。

Django 会在修改模型或字段时生成迁移——即便修改的是不会影响数据库的配置——因为唯一能确保结果正确性的方法时完整记录修改历史,而且这些东西你以后可能在某些数据迁移中用的到(例如,已设置了自定义验证器的时候)

后端支持

所有 Django 支持的数据库后端都支持迁移,还有些支持表修改(通过 SchemaEditor 类实现)的第三方后端也支持。

然而,有些数据库在表结构变更方面比其它数据库更强;下面介绍一些注意事项。

Workflow

Django can create migrations for you. Make changes to your models - say, add a field and remove a model - and then run makemigrations:

$ python manage.py makemigrations
Migrations for 'books':
  books/migrations/0003_auto.py:
    - Alter field author on book

Your models will be scanned and compared to the versions currently contained in your migration files, and then a new set of migrations will be written out. Make sure to read the output to see what makemigrations thinks you have changed - it's not perfect, and for complex changes it might not be detecting what you expect.

Once you have your new migration files, you should apply them to your database to make sure they work as expected:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: books
Running migrations:
  Rendering model states... DONE
  Applying books.0003_auto... OK

Once the migration is applied, commit the migration and the models change to your version control system as a single commit - that way, when other developers (or your production servers) check out the code, they'll get both the changes to your models and the accompanying migration at the same time.

If you want to give the migration(s) a meaningful name instead of a generated one, you can use the makemigrations --name option:

$ python manage.py makemigrations --name changed_my_model your_app_label

相关文章

  • 点评营销系统迁移方案

    迁移方案总体步骤 代码迁移 服务器迁移 数据库迁移 代码迁移 主要内容:代码全部迁移至general-market...

  • 2018-04-15 迁移学习的度量准则

    迁移学习的方法主要包括:基于样本的迁移,基于特征的迁移,基于模型的迁移和基于关系的迁移。 “迁移学习的总体思路可以...

  • 深入浅出KVM(八)丨使用 libvirt 迁移 QEMU/KV

    1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移。系统整理迁移...

  • 学习迁移的种类

    一,性质和结果:正迁移,负迁移,零迁移。 二,发生的方向:顺向迁移,逆向迁移。 三,内容的抽象和概括水平不同:水平...

  • 《超级个体》拆听13——乐高式能力结构

    技能迁移分为两种:正迁移、负迁移。正迁移会带来好处,负迁移会产生负面效应。 输入一致,输出一致——正迁移 输入一致...

  • laravel的数据迁移命令

    1. 创建数据迁移 2. 迁移结构 3. 运行迁移 4. 回滚迁移 5. 编写迁移 创建表使用Schema门面上的...

  • 简单的服务端数据迁移

    数据迁移在服务端是很常见的,包括cache迁移、db迁移等。迁移的动机包括业务重构、业务隔离、机器迁移、扩容等很多...

  • 记一次ES的索引迁移

    由于公司需要统一整合ES服务,最近开始着手迁移。迁移方案主要分为物理迁移、本地升级、逻辑迁移三种。 物理迁移,就是...

  • 可迁移能力

    什么是可迁移能力?哪些能力属于可迁移能力? 如何培养可迁移能力? 可迁移能力的底成框架,思维模型是什么? 可迁移能...

  • kvm迁移

    kvm分静态和动态迁移,静态就是关机迁移,比较简单,动态迁移就是不关闭服务器进行迁移。静态迁移:确定虚拟机关闭 准...

网友评论

      本文标题:迁移

      本文链接:https://www.haomeiwen.com/subject/pzhsfktx.html