[Django1.6]south于django1.6使用

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

时间: 2024-08-13 10:01:48

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

[Django1.6]south在django1.6中的使用

south在django1.6中的使用 django1.7中已经支持数据合并了,所以只能在django1.4 1.5 1.6的版本中使用south. south的主要作用就是做数据的合并,当我们在django中定义了一个模型之后,使用syncdb同步到数据库中,而后如果 修改了模型的字段,或者字段属性,在使用syncdb就不可以了. 这时候如果要迁移数据就需要重新建库,把原始数据 迁移到新库,south可以帮您自动的完成这些操作. 之前一直没怎么用过,现在用的django版本还是1.6,最近的开

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

在linux6.5中已经自带了python 2 .python 2.6 ,并且yum程序使用的就是自带的python,所以系统自带的python不要随意卸载否则可能导致yum用不了. 测试环境:centos6.7python:python 3.5.2:下载地址:https://www.python.org/ftp/python/3.5.2/先配置本地yum源, 配置方法,参考:http://blog.csdn.net/zhang123456456/article/details/56690945

Sphinx编译docs文档

在使用Python.Django的过程中,经常看到docs目录,里面存放着一些txt文本文件,也就是自带的一些帮助文档,里面有make.bat,在dos目录下直接执行make,给出的帮助是可以转换成Html.PDF等文件形式,那么,怎么转换这些帮助文档呢?直接执行make html发现提示sphinx-build不是内部或外部命令,在网上下载了Sphinx,并安装,再次执行make html时发现还是提示不是内部或外部命令,最后发现,Sphinx安装后,并没有在Python安装目录中生成Sphi

nginx_uWSGI_django_virtualenv_supervisor发布web服务器

nginx_uWSGI_django_virtualenv_supervisor发布web服务器 nginx 导论 12345678910111213141516171819202122232425262728 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求)基于wsgi运行的框架有bottle,DJango,Flask,用于解析动态HTTP请求支持WSGI的服务器 wsgi

Django路由层与视图层、pycharm虚拟环境

一. Django路由层 路由层即对应项目文件下的urls.py文件.实际上每个APP中也可以有自己的urls.py路由层.templates文件夹及static文件夹.Django支持这么做,也为实际工作中一个项目多人协作完成提供了便利:即每个人单独建一个Django项目写一个APP,最后新建一个Django项目将所有APP汇总,然后settings中注册各个APP,再修改一下其他配置即可. 路由层大致内容如下: from django.conf.urls import url from dj

Django1.6版本的PG数据库定义手动升级

Django1.7以后添加了migration功能,数据库定义的升级完全实现自动化,之前是通过一个叫south的app来做的.这篇文章谈一下1.6下的手动更新升级. 1.table create和table delete操作,万幸的是Django即便是旧版本,其table的添加删除,其syncdb命令也可以识别出来. 2.field add和field remove 这两个操作得自己手动来.一般定义名称.类型.非空这些基本属性,因为Django的model会默认增加主键,所以像主键字段的序列这种

简易博客开发(8)----django1.9 博客部署到pythonanywhere上

准备工作 首先需要注册一下,pythonanywhere的免费账户有一定的限制,只能创建一个web app,不能绑定独立域名,不能通过ssh连接,不过只是搭一个project也是够用了. 注册成功之后直接转到dashboard页面 几个tab,Console是新建一个控制台,用于操作服务器,Files是用文件目录的形式管理和编辑文件,Web是总的控制界面,Schedule和Database目前还没用上. 上面这个绿色块的提示基本上一直都在然而并没有什么卵用,转到Web栏 选择Add a new

Django-1.5学习--第1天

1.Django下载与安装 1.1download #wget https://www.djangoproject.com/download/1.5.11/tarball/ -O Django-1.5.11.tar.gz 1.2install #tar xf django-1.5.11.tar.gz #cd django-1.5.11 #python setup.py install 2.Django应用开发hello world #cd /root/Django-1.5.11 #django-

基于Django1.10与Celery4实现异步队列任务

由于django-celery这个模块我在django1.10的版本内运行不起来,只能使用野生的Celery,Celery4支持django1.8以上的版本,1.8以下的版本请使用Celery3,整个配置过程并不复杂: 整个目录结构: 一.安装模块: pip install celery pip install django-celery-results django-celery-results作用是将Celery的运行结果存入数据库 二.建立Celery入口文件(celery.py): fr