首页 > 代码库 > Django-South 实现数据库自动迁移
Django-South 实现数据库自动迁移
1. South 简介
South 是Django的第三方app,专门做数据库表结构自动迁移工作。他已经成为Django数据库表迁移标准,很多第三方app都会带South migrations脚本。
2. syncdb简介
syncdb意思是数据库同步。syncdb 命令是同步你的模型到数据库的一个简单方法。 它会根据 INSTALLED_APPS 里设置的app来检查数据库, 如果表不存在,它就会创建它。 需要注意的是,syncdb 并不能将模型的修改或删除同步到数据库;如果你修改或删除了一个模型,并想把它提交到数据库,syncdb并不会做出任何处理。
如果你再次运行 python manage.py syncdb ,什么也没发生,因为你没有添加新的模型或者添加新的app。因此,运行python manage.py syncdb总是安全的,因为它不会重复执行SQL语句。
3. Souch 特性
(1)、自动迁移:south可自动检测你的Models.py文件的改变,自动写入migrations去匹配你所做的改变。
(2)、数据库独立性:完全与数据库无关的,支持五个不同的数据库后端。这样就无需再关注于数据库方向,而专注与django。
(3)、app艺术:south依赖app,south本身也是django的第三方app,再使用的时候单独作用于每个app下,进行迁移,同步。
(4)、VCS处理:south也能处理如果别人提交迁移到相同的应用程序作为你和他们冲突。
4. South使用
1> 安装South
pip install South #如果pip未安装,应先安装pip
2> South 配置
South作为Django第三方的app,需要在django setting.py 配置文件添加South应用。
INSTALLED_APPS = ( ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘south‘, #添加south应用 ‘blog‘, )
3> 创建一个module
#-*- coding:utf-8 -*- from django.db import models class User(models.Model): user = models.CharField(max_length=20) passwd = models.CharField(max_length=128) def __unicode__(self): return user
4> 初始化app
python manage.py schemamigration blog --initial #第一次初始化;应用blog注册到south中,只执行一次
5> 自动监测model类
python manage.py schemamigration blog --auto #自动检测model类的更改情况
6>执行同步工作
python manage.py migrate blog #执行同步工作
本文出自 “系统运维” 博客,请务必保留此出处http://davidbj.blog.51cto.com/4159484/1411515