south在django1.6中的使用

django1.7中已经支持数据合并了,所以仅仅能在django1.4 1.5 1.6的版本号中使用south。 south的主要作用就是做数据的合并,当我们在django中定义了一个模型之后,使用syncdb同步到数据库中。而后假设 改动了模型的字段。或者字段属性,在使用syncdb就不能够了。 这时候假设要迁移数据就须要又一次建库,把原始数据 迁移到新库,south能够帮您自己主动的完毕这些操作。 之前一直没怎么用过,如今用的django版本号还是1.6,近期的开发属于 模型不是非常稳定的时间,于是就拿来使用下.

说明

  • django1.6
  • win7
  • 数据库 mysql 5.6

安装

使用pip安装

pip install south

假设是升级sourh(1.0应该是最后一版)

pip install south --upgrade

django中配置

1

在你的django项目的settings文件里加入一个新的app (INSTALLED_APPS配置项)

INSTALLED_APPS = (
...
'south',
)

2

然后在项目下使用 python manage.py shell 打开django的shell

In [1]: import south

假设没有错误,说明安装配置好了。

3

使用之前先要在数据库中同步south的须要的表。

python manage.py syncdb

此时数据库中已经多了south_migrationhistory这个表。

使用

这是一个已经开发的项目,非常多表和表结构已经建立好也是用syncdb同步到数据库中。

app的名称是 adsr。 有个模型为

class AdDailyReport(models.Model):

    ad = models.ForeignKey(Ad, on_delete=models.PROTECT)
ddate = models.DateField(auto_now=False, auto_now_add=False, verbose_name=u'统计日期')
pv = models.IntegerField(default=0, verbose_name=u'展现量')
pc = models.IntegerField(default=0, verbose_name=u'点击量')
cost = models.DecimalField(null=True,max_digits=10, decimal_places=2, verbose_name=u'花费')
addtime = models.DateTimeField(auto_now_add=True)

初始化合并

south有自己主动也有手动的合并方式。这里我们使用自己主动的方式

新建一个app还没有syncdb的情况下使用south

已经存在的app,数据库已经有表的情况

在没有不论什么模型变化的时候,对现有初始化:

E:\hawk>python manage.py convert_to_south  adsr
This application is already managed by South.

然后才干够和新的app models一样,改动,合并模式,应用合并.

改动模型

模型最后加入了一个记录更新时间的字段

updatetime = models.DateTimeField(auto_now=True)

south 改动模式,应用

E:\hawk>python manage.py schemamigration adsr --auto

给了一些提示

E:\hawk>python manage.py schemamigration adsr --auto
? The field 'AdDailyReport.updatetime' does not have a default specified, yet i
s NOT NULL.
? Since you are adding this field, you MUST specify a default
? value to use for existing rows. Would you like to:
? 1. Quit now, and add a default to the field in models.py
? 2. Specify a one-off value to use for existing columns now
? Please select a choice:

google下stackoverflow上的回答, 然后例如以下的操作

  ?

Please select a choice: 2
? Please enter Python code for your one-off default value.
? The datetime module is available, so you can do e.g. datetime.date.today()
>>> datetime.datetime.now()
+ Added field updatetime on adsr.AdDailyReport
Created 0002_auto__add_field_addailyreport_updatetime.py. You can now apply this
migration with: ./manage.py migrate adsr

这样就把新的数据模型生成了。然后是应用。

E:\hawk>python manage.py migrate adsr

把表变更和数据合并应用。这样就把新的表结构生成,而且自己主动迁移数据。

ref

高级的应用

本文出自 “orangleliu笔记本”博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/40394925

版权声明:本文orangleliu(http://blog.csdn.net/orangleliu/)原创文章。文章转载申报。

[Django1.6]south于django1.6使用的更多相关文章

  1. python之 centos6.7下 python 3.5.2、Django-1.9 安装

    在linux6.5中已经自带了python 2 .python 2.6 ,并且yum程序使用的就是自带的python,所以系统自带的python不要随意卸载否则可能导致yum用不了. 测试环境:cen ...

  2. Cenos6.6 升级 python3.5.2 安装配置 django1.10

    1 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件) yum groupinstall 'Development Tools' yum install zl ...

  3. python之 centos6.7下 python 3.5.2 源码、Django-1.9 安装

    在linux6.5中已经自带了python 2 .python 2.6 ,并且yum程序使用的就是自带的python,所以系统自带的python不要随意卸载否则可能导致yum用不了. 测试环境:cen ...

  4. Sphinx编译docs文档

    在使用Python.Django的过程中,经常看到docs目录,里面存放着一些txt文本文件,也就是自带的一些帮助文档,里面有make.bat,在dos目录下直接执行make,给出的帮助是可以转换成H ...

  5. Django基础—1

    一. Django的安装1. 查看已安装的Django的版本     进入到终端以及Python的交互模式    python3/ ipython32. 交互模式中输入import django    ...

  6. virtualenv虚拟环境安装不同版本的django

    在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下. 如果我们要同时开发多个应用程序,那这 ...

  7. nginx+django+uwsgi

    最近来了兴致,想搞一下django开发,so,  搭建一下环境 1.安装django,可能通过pip install 或者源码安装(因为环境是python2.6.6的环境,所以这里采用django 1 ...

  8. nginx_uWSGI_django_virtualenv_supervisor发布web服务器

    nginx_uWSGI_django_virtualenv_supervisor发布web服务器 nginx 导论 123456789101112131415161718192021222324252 ...

  9. Django2.0使用

    创建项目: 通过命令行的方式:首先要进入到安装了django的虚拟环境中.然后执行命令: django-admin startproject [项目的名称] 这样就可以在当前目录下创建一个项目了. 通 ...

随机推荐

  1. Nginx对某个文件夹或整个站点进行登录认证的方法

    比方要对 站点文件夹下的 test 文件夹 进行加密认证 首先须要在opt 的主文件夹中 /opt/ 创建一个新文件 htpasswd 此文件的书写格式是 username:password 每行一个 ...

  2. 流动python - 一个极简主义event制

    event至少该系统的核心,以满足: 1.存储容器事件,可以被添加到事件来删除 2.触发事件fire 守则. class Event(list): def __call__(self, *args, ...

  3. SQLiteDatabase和Contentprovider

    SQLiteDatabase和Contentprovider这两个数据库,我一般是用前面一个,喜欢它的操作数据库的语句,简单明了,可惜有时遇到数据库同步的问题,有时我们需要在一个数据库下建立多个表,多 ...

  4. 二叉树的建立与遍历(山东理工OJ)

    题目描写叙述 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(当中逗号表示空节点).请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度. 输入 输入一个长度 ...

  5. 设计模式之迭代器模式(Iterator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  6. 金色的 SQL注意事项(1)

    page(1-75) 最好是没有意义的主键字段,以方便未来的扩展. PS:主键,以后标书编码填错须要改的时候,关联表都须要跟着改.假设是一个无意义的自增字段是主键就无此原因. 主键最好不要设置为联合主 ...

  7. 【ECSHOP插件】商品颜色尺寸仿淘宝选择功能免费发布

    先放效果图,如此实用的功能是不是迫不及待的要添加到自己的网店中了呢   牵涉到的修改文件(default模板为例) /themes/default/style.css /themes/default/ ...

  8. windows phone 独立存储空间的操作 (2)

    原文:windows phone 独立存储空间的操作 (2) IsolatedStorage独立存储空间是保存应用程序的一些数据已经配置文件,独立存储空间相对于其他的wp程序是独立的,也就是说每个wp ...

  9. cocos2d-x 音乐/音效设置

    cocos2d-x 游戏中声音 有两种 一种是背景音乐一种是音效 载入音乐 或者音效的时候 我们须要先缓存声音 #include "SimpleAudioEngine.h" usi ...

  10. UNIX网络编程卷1 时间获取程序server TCP 协议相关性

    本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie 最初代码:  这是一个简单的时间获取server程序.它和时间获取程序client一道工作. ...