django 1.7 新特性 --- data migration
官方文档:https://docs.djangoproject.com/en/dev/topics/migrations/
1.7 之前大家可能会用south用于管理数据库的模型的同步。1.7之后django已经集成了这个功能。下面做简单示例:
1). 新建一个项目 test_migrations, 并新建一个app: test_m
2). 修改test_migrations的settings.py,使其INSTALLED_APP包含test_m,请修改test_m的models.py文件,如下:
from django.db import models class test_m(models.Model):
name = models.CharFiled(max_length=32)
3). 生成迁移文件并迁移,在test_migrations目录下执行以下指令:
./manage.py makemigrations
./manage.py migrate
以上指令会自动将project下面的所有app自动建议新的迁移版本(0001_initial.py,内容如下)并迁移,这个比south要简洁一些。
# -*- coding:utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations class Migration(migrations.Migration):
dependencies=[]
operations = [
migrations.CreateModel(
name= 'test_m',
fields = [
('id',models.AutoField(verbose_name='ID',serialize=False,auto_created=True,primary_key=True)),
('name',models.CharField(max_length=32))
],
options={},
bases=(models.Model,)
),
]
4). 修改2)中的model,添加字段sex,如下:
from django.db import models class test_m(models.Model):
name = models.CharField(max_length=32)
sex = models.CharField(choices=[('m','male'),('f','female')],max_length=32)
5). 再来一次makemigration/migrate,会生成一个0002_test_m_sex.py文件,并询问设置默认值为多少。迁移完成会有如下提示:
Operations to perform:
Apply all migrations:admin,contenttypes,test_m,auth,sessions
Running migrations:
Applying test_m.0002_test_p_sex... OK
备注:还有一个命令,用于查看sql,示例如下:
./manage.py sqlmigrate test_m 0002_test_m_sex
BEGIN;
CREATE TABLE "test_m_test_p__new" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(32) NOT NULL, "sex" varchar(32) NOT NULL);
INSERT INTO "test_m_test_p__new" ("sex", "id", "name") SELECT 'male', "id", "name" FROM "test_perm_test_p";
DROP TABLE "test_m_test_p";
ALTER TABLE "test_m_test_p__new" RENAME TO "test_m_test_p";
django 1.7 新特性 --- data migration的更多相关文章
- Django 2.0 新特性 抢先看!
一.Python兼容性 Django 2.0支持Python3.4.3.5和3.6.Django官方强烈推荐每个系列的最新版本. 最重要的是Django 2.0不再支持Python2! Django ...
- Java8 新特性 Data Time API
Java8新的日期类型 在Java8以前,Date日期API对我们非常的不友好,它无法表示日期,只能以毫秒的精试来表示时间,并且可以修改,他的线程还不是安全的.所以Java8中引入了全新的日期和时间A ...
- Django若干新版本一些新特性
前面那篇文章简单总结了1.9版本的新特性,其实这是我一直想做的一件事情,不过因为对于工作不是那么紧急需要,所以一直被搁浅着,今天既然做了就多做一点吧 Django1.8的新特性大概(2015年4月发布 ...
- SQL Server 2014 BI新特性(一)五个关键点带你了解Excel下的Data Explorer
Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企业中的自助式的商业智能变得更加的灵活,从而也降低了商业智能的门槛. 此文是在微软商业智能官方博客里 ...
- 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性
[索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...
- SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer
SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企 ...
- 11G新特性 -- flashback data archive(1)
虽然可以依赖undo数据来查询row的旧版本数据,甚至可以执行逻辑恢复.但是你不能期待在undo中找到非常旧的数据.undo数据主要是用来提供读一致性. 在11G中,提供了Flashback Data ...
- 浅析Oracle 12c中Data Guard新特性
浅析Oracle 12c中Data Guard新特性 写在前面 无论是做Oracle运维的小伙伴还是老伙伴,想必对Oracle数据库的数据级灾备核心技术—Data Guard是再熟悉不过了!这项从 ...
- Oracle 12C 新特性之扩展数据类型(extended data type)
Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...
随机推荐
- Objective-C 高性能的循环遍历 forin - NSEnumerator - 枚举 优化
Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合 (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏 ...
- beta版本工作百分比
1.附上github上,beta阶段的整体工作情况 2.beta版本分工情况: 马凛凛 031302620(组长):主要负责任务分配和规划,编码工作主要是系统的“实时编辑”功能,以及服务器的配置和部署 ...
- UVA5874 Social Holidaying 二分匹配
二分匹配简单题,看懂题意,建图比较重要. #include<stdio.h> #include<string.h> #define maxn 1100 int map[maxn ...
- 转: maven进阶:一个多模块项目
一个多模块项目通过一个父POM 引用一个或多个子模块来定义.父项目,通过以下配置,将子项目关联. <packaging>pom</packaging> <modules& ...
- 一个项目中哪些文件是要上传到 git上的,哪些是不必要的
- 让Jayrock插上翅膀(加入输入输出参数注释,测试页面有注释,下拉框可以搜索)
继上一篇文章介绍了Jayrock组件开发接口的具体步骤和优缺点之后,今天给大家带来的就是,如何修复这些缺点. 首先来回顾一下修复的缺点有哪些: 1.每个接口的只能写大概的注释,不能分开来写,如接口的主 ...
- 网络包处理工具NetBee
What is NetBee? NetBee is a new library intended for several types of packet processing, such as pac ...
- 五种开源协议的比较(BSD_Apache_GPL_LGPL_MIT)
现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetic ...
- 一个cheat命令 == Linux命令小抄大全
本文介绍一个Linux超级命令,有了这个命令,你就可以开开心心的使用linux上的各种命令了.当你要执行一个linux命令,在这个命令参数选项众多时,你一般怎么做?对,我们大多数人都会去求助man命令 ...
- laravel框架中的session问题
这两天一直在鼓捣服务器,配置环境,在搭建laravel的过程之中,发现了laravel中的session的一些问题,这里总结一下: (1):我在服务器上搭建了多个sever,为了测试学习,分别使用不同 ...