博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Django1.6]south于django1.6使用
阅读量:7201 次
发布时间:2019-06-29

本文共 2487 字,大约阅读时间需要 8 分钟。

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有自己主动也有手动的合并方式。这里我们使用自己主动的方式

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

E:\hawk>python manage.py convert_to_south  adsrThis 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下, 然后例如以下的操作

?

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/)原创文章。文章转载申报。

你可能感兴趣的文章
10.5. 谁来控制数据库缓存
查看>>
SQLPrompt_7.2.2.273〖含注册机〗(支持低版本和最高版本SQL2016+VS2015)
查看>>
匿名方法,Lambda表达式,高阶函数
查看>>
Android(Xamarin)之旅(二)
查看>>
【dotnet跨平台】微软昨天宣布正式发布.NET Core RC2和.NET Core SDK Preview 1,还有Entity Framework Core RC2...
查看>>
介绍一个好用的软件--多个WIN远程连接
查看>>
探索不一样的ERP 在云端的企业管理平台
查看>>
也聊老朋友:诺基亚的归来
查看>>
频频发力 5G,英特尔在下一代技术上都做了什么?
查看>>
DOM
查看>>
Nginx学习笔记(一) Nginx架构
查看>>
【数据结构之旅】稀疏矩阵的快速转置
查看>>
LLDB使用以及技巧
查看>>
C语言指针传递详解
查看>>
[翻译] JTNumberScrollAnimatedView
查看>>
Groovy语法介绍
查看>>
玩转2048,不如搞定2048
查看>>
第一米店Diyimi.net 域名交易
查看>>
IOS中表视图(UITableView)使用详解
查看>>
Lua talbe's pairs & ipairs & traverse loop, table.pack and table.unpack
查看>>