如果你用过Django的数据库就会发现一个比较令人纠结的地方:数据库更改。

我们知道添加或者删除一个models.Model 需要在数据库里相应的操作,这需要我们进入数据库命令行手动添加或删除,因为syncdb命令无法进行数据库的更改只能进行更新操作。手动修改过于麻烦,也许更残忍的方法就是直接删除整个database,然后重新建立一个database,这个方法对于项目初期尚可以。

但是幸运的是,我们有south来完成数据库的迁移。

下载安装:

easy_install south

设置:

把south 放进 settings.py 里的 INSTALLED_APPS

执行 syncdb 命令

我们看到一个信息 Creating table south_migrationhistory 顾名思义 我们知道生成了一个记录migration历史的表。

我们把自己的app (本文是blog)加入到Migration中去

执行 python  manage.py convert_to_south blog

可以看到 我们在blog文件夹里自动生成了migrations文件夹,里面存放着 迁移文件0001_initial.py 。

好了,到现在我们可以随意修改model了,哈哈 。

如果你修改了model,首先执行 python manage.py schemamigration yourapp --auto,然后就会生成一个0002_auto__xxxx.py文件

但是这还没有修改到数据库,我们再执行 python manage.py migrate yourapp 就一切OK了。

上面的功能对于一般情况的使用已经足够了,接下来我们讲一讲其他的功能:

convert_to_south命令只能够使用在你所运行这一命令的第一台机器上,如果你把服务器部署在你的 VCS,你需要在每一台有你的codebase的机器(确保你已经升级了model 和scheme 表)上执行命令  manage.py migrate myapp 0001 --fake 只有这样你的下一步迁移才会正确执行。

由于时间关系,其他的功能以后再做讨论,

Django数据库迁移的更多相关文章

  1. Django 数据库迁移

    Django 数据库迁移 DATABASES = { # Django默认配置使用sqlite3数据库 # 'default': { # 'ENGINE': 'django.db.backends.s ...

  2. django数据库迁移时候异常

    django数据库迁移时候异常 一.错误信息 Django在根据models生成数据库表时报 init() missing 1 required positional argument: 'on_de ...

  3. 关于django数据库迁移 以及显示未检测到更改的问题

    No changes detected 显示这样的原因 数据库迁移代码步骤: 今天在所有数据库的时候对数据库进行了删除,重新迁移数据库映射,但是却发现终端给出了这样的信息. '>>> ...

  4. django数据库迁移相关【sqlite3迁移到MySQL】(django2.0.3测试通过)

    前言 项目部署到服务器之后,用的数据库还是sqlite3. 发现一些问题,sqlite3是小巧,但是服务器上查看数据库比较费劲,不能直观看到数据.可是我们经常需要即时.直观查看数据,这就用到MySQL ...

  5. django数据库迁移报错

    当输入C:\Users\太阳之泪\b2p\my_pro>python manage.py makemigrations shop 出现一下情况 然后输入C:\Users\太阳之泪\b2p\my_ ...

  6. django数据库迁移-15

    目录 1.迁移 1.生成迁移文件 2.执行迁移命令 添加测试数据 1.迁移 创建完模型类后,并没有真正的在数据库中创建了数据表,需要执行迁移命令,在数据表中创建数据表. 1.生成迁移文件 manage ...

  7. django中的数据库迁移

    Django是用python写的web开发框架,其特点是: 1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速, 2.MVT模式:前后端分离,高内聚低耦合,m:model,与mvc中的m功能 ...

  8. django 数据库配置 ,APP 迁移.模型基础

    # 1.数据库的连接配置django 连接mysql的配置流程:- 安装 pymysql pip install pymysql- 创建数据库用户有创建数据库权限的用户- 创建数据库crm .进入数据 ...

  9. 【Django】依赖auth.user的数据库迁移,以及admin用户非交互式创建

    admin用户非交互式创建: echo "from django.contrib.auth.models import User; User.objects.create_superuser ...

随机推荐

  1. mysql只导出表结构或数据

    唯一的非导电结构指南数据 mysqldump -t 数据库名称 -uroot -p > xxx.sql 指南结构不仅指导数据 mysqldump    --opt -d  数据库名 -u -p ...

  2. OS和android游戏纹理优化和内存优化(cocos2d-x)

    注:原文地址不详! 1.2d游戏最占内存的无疑是图片资源. 2.cocos2d-x不同平台读取纹理的机制不同. ios以下使用CGImage,android和windows下是直接调用png库.我測试 ...

  3. Skype发布视频API

    原文:Skype发布视频API 相信很多人对Skype多少都应该有一些了解,如果以前没有使用过它的服务的话,也应该在最近的新闻中听说过它的大名.因为,它和我们每天都在接触的公司--Mircrosoft ...

  4. XML的序列化和反序列化 详细介绍

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  5. Call to undefined function mssql_connect()错误解决

    原文:Call to undefined function mssql_connect()错误解决 同事用php+mssql修改一个系统,却一直配置不了环境.遂做了一个测试,一般情况下我们会注意php ...

  6. Msgbox消息框

    于"自"<软件开发工具>一本书有这样的制剂,让我回忆--程序员可以做,让用户做:它允许用户做的少,即使是那些谁需要做的程序设置.我们应该做的. 这不是宣言.该是践行. ...

  7. Swift语言指南(四)--类型安全和类型推断

    原文:Swift语言指南(四)--类型安全和类型推断 Swift是一门类型安全语言,类型安全语言需要代码里值的类型非常明确.如果你的代码中有部分值需要String类型,你就不能错误地传递Int. 鉴于 ...

  8. easyui datagrid load 封装 参数问题 js 作用域

    var temp = { LoginAccount: $('#LoginAccount').val(), ShopName: $('#ShopName').val() }; function doSe ...

  9. 常用批处理命令总结3之Find和FindStr

    原文:常用批处理命令总结3之Find和FindStr find 作用:从文件中收索字符串 格式:find 参数 "字符串" 路径\文件名 参数: /V 显示所有未包含指定字符串的行 ...

  10. 微信公众平台消息接口开发-封装weixin.class.php

    原文:微信公众平台消息接口开发-封装weixin.class.php 一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处 ...