Django的migrations机制概述

来源:互联网 发布:sfp端口是什么 编辑:程序博客网 时间:2024/05/17 14:30

Django框架提供的migrations是一个独立的机制,主要用以在Django应用中的model类和数据库结构的schema之间进行同步。

1. Django应用中的model类

model是业务逻辑的数据对象,包含fields和behaviors。
一种model类就是django.db.models.Model类的扩展。
一种model对应数据库中的一张表。

在myFirstDjangoSite/myFirstApp/models.py中,创建model类的示例如下:

from django.db import modelsclass MyModel(models.Model):...

2. migrations文件

在Django应用中,migrations是一系列文件,位于Django应用的migrations目录下,用以存储Django应用中的model类的变化。
每次在Django应用中对model类的修改,都会对应一个migration文件。
一个migration文件与数据库结构的schema的一个版本对应。
从文件名看,migrations文件也是Python软件模块,其中包含各种用以操作数据库的django.db.migrations.operations对象。

3. Django框架中的migrations实现
通过django.db.migrations软件包实现migrations的业务逻辑;
通过SchemaEditor与各种不同的数据库服务器交互,支持多种数据库服务器。

4. migrations相关命令

  • makemigrations
基于当前的models类创建一个新的migration文件
同时修改myproject/myproject/settings.py中的MIGRATION_MODULES变量的值

MIGRATION_MODULES = {'mylists': 'mylists.db_migrations'}

  • migrate
将当前的migration文件内容持久化到数据库中
  • sqlmigrate
根据输入的migrations名称,输出对应的SQL语句
  • showmigrations
显示出Django项目中的所有migrations文件及其状态

命令示例:

python manage.py makemigrations mylistspython manage.py  migratepython manage.py sqlmigrate mylists 0001


参考链接:
https://docs.djangoproject.com/en/1.11/topics/migrations/
https://docs.djangoproject.com/en/1.11/ref/django-admin/#django-admin-migrate
https://docs.djangoproject.com/en/1.11/ref/schema-editor/