您的位置:首页 > 编程语言 > Go语言

Django的migrations机制概述

2017-09-28 12:50 357 查看
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 models
class 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 mylists
python manage.py migrate
python 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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息