**
**
分类: Web开发
一、下载与安装
south安装包下载地址:https://bitbucket.org/andrewgodwin/south/
south文档:http://south.readthedocs.org/en/latest/
二、south简介
Django 的第三方 app South 就是专门做数据库表结构自动迁移工作,Jacob Kaplan-Moss 曾做过一次调查,South 名列最受欢迎的第三方 app。事实上,它现在已经俨然成为 Django 事实上的数据库表迁移标准,很多第三方 app 都会带 South migrations 脚本。
三、回顾syncdb
syncdb是db synchronization的缩写,意思是数据库同步。
syncdb 命令是同步你的模型到数据库的一个简单方法。 它会根据 INSTALLED_APPS 里设置的app来检查数据库, 如果表不存在,它就会创建它。 需要注意的是, syncdb 并不能将模型的修改或删除同步到数据库;如果你修改或删除了一个模型,并想把它提交到数据库,syncdb并不会做出任何处理。
如果你再次运行 python manage.py syncdb ,什么也没发生,因为你没有添加新的模型或者添加新的app。因此,运行python manage.py syncdb总是安全的,因为它不会重复执行SQL语句。
知识总结:迁移( migrations?)
四、为什么用south
对于二、三两点,可知syncdb的不足,如果更改了models,如添加一列等此时syncdb就没有用武之地了,如果硬手工修改表结构不仅容易出错,又不安全,并非权宜之计,而south却能很好的解决该问题。
south特性:
(1)、自动迁移:south可自动检测你的Models.py文件的改变,自动写入migrations去匹配你所做的改变。
(2)、数据库独立性:完全与数据库无关的,支持五个不同的数据库后端。这样就无需再关注于数据库方向,而专注与django。
(3)、app艺术:south依赖app,south本身也是django的第三方app,再在使用的时候单独作用于每个app下,进行迁移,同步。
(4)、VCS处理:south也能处理如果别人提交迁移到相同的应用程序作为你和他们冲突。
你写的迁移(migrations),它告诉south如何从一个版本升级到下一个,和通过串接在一起你可以移动这些迁移向前(或向后)通过历史数据库的模式。south也能创建新的model
五、快速指南
1、安装完South之后,要在django项目中使用South,先要将South作为一个App导入项目,所以设置INSTALL_APP添加south 第一次使用South。
2、python manage.py syncdb 用来创建south_migrationhistory表。
3、python manage.py convert_to_south youappname #在youappname目录下面创建migrations目录以及第一次迁移需要的0001_initial.py文件
4、如果改变了model里的内容,python manage.py schemamigration youappname –auto #检测对models的更改
python manage.py migrate youappnam #将更改反应到数据库(如果出现表已存在的错误,后面加 –fake)
如果第一次使用(常用):
1、python manage.py schemamigration youappname –initial # youappname目录下面创建一个migrations的子目录(注意!!就算有多个app,也只要initial一个就可以)
2、python manage.py syncdb #初始化数据表等
以后每次对models更改后,可以运行以下两条命令同步到数据库
3、python manage.py schemamigration youappname –auto #检测对models的更改
4、python manage.py migrate youappnam #将更改反应到数据库(如果出现表已存在的错误,后面加 –fake)
推荐教程:
django开发教程:http://django-chinese-docs-16.readthedocs.org/en/latest/