django schema migration
syncdb 仅仅能初始化table(create),不能自己主动update/delete/drop。
那么south应运而生。
south简单使用方法:
安装:
pip install South
安装完后,增加到INSTALLED_APPS中,并syncdb一下,否则会出现south_migrationhistory 表找不到。
(注:此时syncdb的行为被south改变了,注意命令行输出,表south_migrationhistory的结构例如以下:
)
測试安装:
manage.py shell
>> import south
建立一个test_south的app,并建立模型south_test,加入一个字段name。 将app加入到INSTALLED_APPS中。
from django.db import models class south_test(models.Model):
name = models.CharField(max_length=100)
# Create your models here.
第一次使用:
manage.py schemamigration your_app --initial
manage.py migrate your_app
本例中,your_app自然是test_south,以下是发生了神马(注意黄色加亮部分):
这一步,仅仅是生成了用于创建数据库表的迁移文件,主要是0001_initial.py,内容例如以下:
这一步,才真正生成了数据库模型,而且在south_migrationhistory加入了一条记录。
数据表south_migrationhistory 插入了一条记录,例如以下:
兴许自己主动ORM:
manage.py schemamigration your_app --auto
manage.py migrate your_app
为了演示,如果如今,因为需求变化,我们改动模型test_south.south_test,加入字段 memo,例如以下:
from django.db import models class south_test(models.Model):
name = models.CharField(max_length=100)
memo = models.CharField(max_length=100)
我们不再运行syncdb,改为运行schemamigration / migrate, 例如以下:
创建了一个0002的文件,例如以下:
migrate之前,我们看下south_test表
运行migrate,例如以下:
再次查看数据库表south_test
我们再次观察下south_migrationhistory表,例如以下:
==========================
对于已经存在的app,增加south非常easy,命令例如以下:
manage.py convert_to_south your_app
它仅仅是在表south_migrationhistory里面加入一条记录(同一时候生成迁移文件)。
如果我们这里的your_app是books,那么south_migrationhistory的记录例如以下:
(注意:假设代码增加了版本号控制---比方svn,那么其它人下载代码后,须要运行manage.py migrate myapp 0001 --fake,由于convert_to_south总是会尝试创建全部已经存在了的表,通过这个命令告诉south,myapp已经创建了这些表,它不须要再次创建了。以后就依照正常的迁移来做:
manage.py syncdb
后面假设有改动模型,则运行
manage.py shemamigration
myapp --auto
manage.py migrate
myapp
)
很多其它信息,能够參考这里:http://south.readthedocs.org/en/latest/tutorial/part1.html#tutorial-part-1
转载请注明来自:http://blog.csdn.net/lion_awake/article/details/38283621,谢谢!
django schema migration的更多相关文章
- django中migration文件是干啥的
昨天很蠢的问leader git push的时候会不会把本地的数据库文件上传上去,意思是django中那些migration文件修改之后会不会上传. 然后得知不会,因为所有的数据库都存在本机的mysq ...
- django清理migration终极解决办法
1.django生成数据表结构的过程 在我们设计好models以后,我们可以通过以下命令生成将要同步给数据库的数据结构文件 python manage.py makemigrations 生成的文件在 ...
- sublime text 3插件
Package Control Messages Emmet emmet插件 Thank you for installing Emmet -- a toolkit that can greatly ...
- GitHub 开源的 MySQL 在线更改 Schema 工具【转】
本文来自:https://segmentfault.com/a/1190000006158503 原文:gh-ost: GitHub's online schema migration tool fo ...
- django使用migrations迁移版本和数据库中报错解决方案
1.到数据库表django_migrations中查看app中看看app列 2.到项目对应的app模块中打开migrations文件查看生成的文件与数据库app列中的是不是一样 3.找到哪里不一致的文 ...
- Django WEB开发 - Django 3.0 Tutorial入门
1. Django 官方网站 https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial01/ 2. Model View Controller ...
- Go 语言相关的优秀框架,库及软件列表
If you see a package or project here that is no longer maintained or is not a good fit, please submi ...
- Awesome Go精选的Go框架,库和软件的精选清单.A curated list of awesome Go frameworks, libraries and software
Awesome Go financial support to Awesome Go A curated list of awesome Go frameworks, libraries a ...
- iOS面试必看
转载:http://www.jianshu.com/p/5d2163640e26 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形 ...
随机推荐
- 【转】Linux Page Cache的工作原理
1 .前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与Windows.UNIX 一起占据了操作系统领域几乎所有的市场份额.特别是在高性能计算 ...
- 反汇编一个简单的C程序
一.实验截图 二.汇编代码分析: cpu首先执行main函数里的pushl %ebp和movl %esp %ebp.如下图: esp减去4就是向上移动4位到1,如下图: 把1赋值给esp,如下图: c ...
- 使用gulp、yeoman、bower建站
前端建站工具 标签 : 工具 *** 脚手架:yeoman 用途 快速搭建新项目 为项目增加新部分 创建模块或者包 引导新服务 ... 开始 安装yo和generator npm i -g yo np ...
- 第二百二十六天 how can I 坚持
今天弟弟生日,只是简单的说了句生日快乐,幸亏看了下日历,要不又忘了. 在家待了一天. 明天还想去爬山,八大处太远了,该去哪呢. 不想在家待着. 日复一日,啊,年复一年啊.想想好可怕,人生,太快.该如何 ...
- CameraComponent Quality
CameraComponent1.Quality := TVideoCaptureQuality.HighQuality; procedure TCameraComponentForm.Set720p ...
- 如何通过写一个chrome扩展启动本地程序
@(编程) [toc] 本文介绍如何利用Chrome 的插件, 从我们的一个网站中启动一个我们的本地程序.本文的环境是windows10,本文的例子是通过点击网页上的一个button,调用本地的wor ...
- Field 'SCHED_TIME' doesn't have a default value
出现这个情况的原因是: 我jar包使用的是quartz-2.1.7版本,但是初始化集群的dbTables脚本用的却是2.2.1版本的,导致出现这个异常,改用2.1.7的dbTables脚本之后即解决问 ...
- 架设证书服务器 及 让IIS启用HTTPS服务
一.架设证书服务器(CA服务)1.在系统控制面板中,找到“添加/删除程序”,点击左侧的“添加/删除windows组件”,在列表中找到“证书服务”,安装之.2.CA类型,这里有四种选择,这里以“独立根C ...
- Python类的探讨
我们下面的探讨基于Python3,我实际测试使用的是Python3.2,Python3与Python2在类函数的类型上做了改变 1,类定义语法 Python类定义以关键字class开头,一个类定义例 ...
- java实现图片与base64字符串之间的转换
package cn.com; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOEx ...