首页 > 代码库 > 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