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                              #执行同步工作

Django-South 实现数据库自动迁移

时间: 2024-08-24 17:15:14

Django-South 实现数据库自动迁移的相关文章

让Code First下的数据库的迁移更加简单

Code First给我们的程序开发带了很多便利,之前的版本中一个比较不大方便的地方是数据库迁移,麻烦不说,往往还和上下文相关,在不同的版本之间的数据库进行迁移还很容易失败,并且一旦失败还不大容易找到解决方案.可能是微软已经意识到这个不足,现在Entity Framework已经支持数据库自动迁移了,比之前的方案要简单太多,下面简单的介绍一下如何使用自动迁移. 开始迁移之前: 开始迁移之前,需要将要迁移的项目设置为默认项目.这一步非常重要,否则后面会出现许多莫名其妙的错误,它包括两个步骤 在解决

flask数据库的迁移

如果是单纯的用flask去启动app.run()是没有办法想django那样对数据库进行迁移的 首先要安装 pip install flask-migrate 然后修改代码,改变flask的启动方式 from flask_migrate import Migrate,MigrateCommand from flask_script import Shell,Manager ... manager = Manager(app) #第一个参数是Flask的实例,第二个参数是Sqlalchemy数据库

解决EntityFramework数据库无法自动迁移解决方法

解决EntityFramework数据库无法自动迁移解决方法 如果在迁移数据库执行完一下三个命令没有成功的话请按下面的步骤去进行数据库迁移 1:Enable-Migrations 2:Add-Migration Student. 3:update-database 一般执行以上3个命令都会成功 第一步:删除迁移命令生成的文件夹:Migrations文件夹,重新生成 第二步:执行迁移命令: Add-Migration ,例如:有一个Student的实体类(Model) 为了命名规范,我们一般执行迁

关于Django中ORM数据库迁移的配置

Django中ORM数据库迁移配置 1,若想将模型转为mysql数据库中的表,需要在settings中配置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'bms', # 要连接的数据库,连接前需要创建好 'USER':'root', # 连接数据库的用户名 'PASSWORD':'', # 连接数据库的密码 'HOST':'127.0.0.1', # 连接主机,默认本级 'PORT':3306

Django模型修改及数据迁移

Migrations Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除. 如果你新增或修改数据模型里的字段,或是删除了一个数据模型,你需要手动在数据库里进行相应的修改或者使用South.Django 1.7中已经集成了South的代码,提供了3个新命令: migrate: 用于执行迁移动作,具有syncdb的功能 makemigrations: 基于当前的model创建新的迁移策略文件 sql

从model到数据库的迁移(转载)

先附上原文链接:http://www.cnblogs.com/babykick/archive/2012/02/02/2336019.html 1)创建一个没有数据库的新项目时 1.创建数据库 2.将south添加到INSTALLED_APPS 3.运行syncdb命令,它将django和south的数据表加入到数据库中 4.将你创建的apps添加到INSTALLED_APPS 5.对每个app分别运行"python manage.py schemamigration app_name --in

django订单部分--数据库事务

订单数据库设计 订单号不再采用数据库自增主键,而是由后端生成创建. 终端命令python manage.py startapp orders 创建订单应用orders,编辑模型类models.py from django.db import models from meiduo_mall.utils.models import BaseModel from users.models import User, Address from goods.models import SKU # Creat

django操作多数据库

django操作多数据库 1. 在settings.py文件中配置多数据库 # Database # https://docs.djangoproject.com/en/2.1/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django_test', 'HOST': '127.0.0.1', 'USER': 'root', 'PASSWORD':

Django项目实践3 - Django模型(数据库字段及操作)

http://blog.csdn.net/pipisorry/article/details/45725953 数据库字段 时间字段 DateTimeField和DateField和TimeField存储的内容分别对应着datetime(),date(),time()三个对象. auto_now=Ture,字段保存时会自动保存当前时间,但要注意每次对其实例执行save()的时候都会将当前时间保存,也就是不能再手动给它存非当前时间的值. auto_now_add=True,字段在实例第一次保存的时