South——谁说Django不能migrate!
零、前言
最近改一个项目,需要对已有的model进行更改。大家都知道Django自带的syncdb只能创建数据库,但是无法将已经改变的model应用的数据库中。
大概两年前遇到这个问题的时候,网上的答案基本上都是自己手动进数据库修改。不过这次一搜,居然发现一个神器——South。
一、快速上手
South是什么东西呢,简单说就是实现migration的一个插件。用过Rails的人应该知道Rails自带migrate功能,非常好用,可以在不影响数据库中已有数据的情况下修改model。South就是干这个的。
由于这个插件比较简单,我就写一下我当时的用法,大家可以有个初步了解。具体的请自行Google South,去官网看。
安装:
easy_install south
配置:
在Django项目的 settings.py 里面的 INSTALLED_APPS 里最后一行加上 'south'。
使用:
因为我已经有了数据,所以运行:
python manage.py syncdb
python manage.py convert_to_south base
base是我存数据用的app。
这样就完成了south的安装配置和初始化。
现在我们可以修改model了。
修改完之后,我们运行:
python manage.py schemamigration base
来生成migration。
注意:这一步仅仅是生成了migration,还没有应用到数据库中。
接着我们运行:
python manage.py migrate base
这样就将migrate应用到了数据库中。
我们可以进数据库中手动查看一下,发现确实改变了。
二、总结
south这个东西,怎么说呢,我觉得只有神器可以形容了。你要知道当你面对已经有数据的项目并且想要修改model时候,那种小心翼翼生怕一步走错就丢失数据的感受有多蛋疼!south就好像是一个保护神,告诉你:放心改吧!
South——谁说Django不能migrate!的更多相关文章
- django 做 migrate 时 表已存在的处理方法
django 做 migrate 时 表已存在的处理方法 文章来源:嗨学网 http://www.piaodoo.com 在开发web的时候,如果是以前已存在的项目,项目下载下来后,为了使用测试库的数 ...
- South - 在 Django 中 Migrate Database
Web 开发避免不了经常修改表结构,手工修改表结构不仅容易出错,而且涉及到多人协作开发时,这么土的做法很不经济. Django 的第三方 app South 就是专门做数据库表结构自动迁移的.Jaco ...
- 当用DJANGO的migrate不成功时。。。。
URL:http://my.oschina.net/u/862582/blog/355421 因为操作SQL数据库时不规范,或是多人开发时产生了同步问题,就可能导致正规的MIGRATE时不能完成. 已 ...
- django 做 migrate 时 表已存在的处理
在开发web的时候,如果是以前已存在的项目,项目下载下来后,为了使用测试库的数据,会直接将整个测试库(如sqlite3)拿到本机来.这种情况下,如果执行的顺序不对,很容易在执行migrate的时候出现 ...
- Django关于migrate无效的问题
目录 django关于manage.py migrate无效的问题解决 django关于manage.py migrate无效的问题解决 问题描述: 对于django已有的model,修改之后,想重新 ...
- Django后台
django的后台我们只要加少些代码,就可以实现强大的功能. 与后台相关文件:每个app中的 admin.py 文件与后台相关. 下面示例是做一个后台添加博客文章的例子: 一,新建一个 名称为 zqx ...
- sfs - django start from scratch
[TOC] Launch with code git spreading is obsolte lwc Installation Path D:\PythonWebSW\Django-1.5.5 ad ...
- Django之路:QuerySet API,后台和表单
一.Django QuerySet API Django模型中我们学习了一些基本的创建和查询.这里专门讲以下数据库接口相关的接口(QuerySet API),当然你也可以选择暂时跳过这节.如果以后用到 ...
- Django之路: 基本命令与网址进阶
一.Django 基本命令 温馨提示:如果你想学习Django,那么就请您从现在开始按照笔记记录一步一步的用手把代码敲出来,千万不要偷懒哦..... 1.创建一个Django project djan ...
随机推荐
- 【Hadoop学习】HDFS中的集中化缓存管理
Hadoop版本:2.6.0 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4146398.html 概述 ...
- homework6-更加简单的题目
又把时间搞错了 以为这次要写客户端程序的博客 没想到这次是“怎么吃” 言归正传 cnblog上面有很多技术博客 http://perhaps.cnblogs.com/archive/2005/08/0 ...
- DBMS_ERRLOG记录DML错误日志(二)
上一篇简单介绍了DML记录语句的限制,虽然所有的例子都是利用INSERT语句,但是LOG ERRORS语句并没有这个限制,UPDATE.DELETE和MERGE都可以使用这个语句.下面要说的就是这篇的 ...
- CF#190DIV.1
/* CF#190DIV.1-C 题意:给你n个结点的树,给这些结点标记字母AB..Z,对于标记相同的结点路径上 的结点的标记必须有一个是大于该标记的:问是否可以标记(A是最大标记) 分析:整天思路就 ...
- Spring MVC BeanNameUrlHandlerMapping example
In Spring MVC, BeanNameUrlHandlerMapping is the default handler mapping mechanism, which maps URL re ...
- [C语言 - 6] static & extern
A. extern函数 一个c文件生成一个obj文件 外部函数:允许其他文件访问.调用的函数(默认函数为外部函数),不允许存在同名的外部函数 my.c //define a extern fu ...
- 第三方类AFNetworking
1.AFNetworking简介 AFNetworking是一个在iOS开发中使用非常多的轻量级网络开源库适用于iOS以及Mac OS X.它构建于在(Apple iOS开发文档) NSURLConn ...
- android EditText控制光标的位置
利用自定义键盘,需要手动删除编辑框中的文本时,会根据光标的位置来删除字符.那么,如何来控制光标呢,android为我们提供了哪些方法,来处理光标呢? 这里提供几个自己写的方法,根据这些方法可以满足在光 ...
- Ehcache(02)——ehcache.xml简介
http://haohaoxuexi.iteye.com/blog/2113728 ehcache.xml简介 ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义Ca ...
- shape中的属性大全
首先,看看事例代码 <shape> <!-- 实心 --> <solid android:color="#ff9999"/> <!-- 渐 ...