四川摩奇

中部地区,很难得的… Django 用户 ...

↑我也要推荐

Django数据库迁移组件(South)

发布时间:2011-12-17 15:49:24, 关注:+531, 评论:+1, 赞美:+1, 不爽:+0

原始出处: 天地一沙鸥

django提供syncdb命令,用于从models自动生成数据库。但在models结构变化后,syncdb并无法自动实现数据库的更新。South组件即是为了解决该问题而出现的。
下面简单介绍一下South的一些最常见用法,更详细的使用方法见South的官方手册。

假设我们创建了一个名叫southtut的app

  1. 生成初始化数据库的south脚本。允许上述命令后将在对于的app目录下生成 migrations目录,south的数据库迁移脚本即保存在该目录。
    ./manage.py schemamigration southtut --initial
     
  2. 在所用south后,syncdb命令不会为使用south托管的app生成数据库。migrate命令用于执行south的数据库迁移脚本, 实现数据库更改。在这里执行的操作是为southtut创建相关的数据库表。不带app名字时,将对project中的所有app进行migrate操 作。
    ./manage.py migrate southtut
     
  3. 在很多应用场景中,我们已经用syncdb将数据库给创建好了。这时候运行上面的migrate命令将会提示相关表已经存在,命令执行失败。这 时候我们需要告诉south需要跳过某些migrate操作。上面的命令将告诉south,系统已经执行过了0001号数据库迁移脚本。
    ./manage.py migrate southtut 0001 --fake
     
  4. 接下来我们对models进行了某些改动,修改后增减了某些字段。
  5. 该命令将自动生成数据库的迁移脚本。在migrations目录下可以看到新增加了文件0002_xxx.py,该文件即是此次models改 动的数据库升级脚本。打开文件后可看到其中有一个类Migration,类中有两个方法forwards和backwards。这两个方法分别实现数据库 升级和会滚时对数据库的操作,具体指令的含义参考south的数据库API
    ./manage.py schemamigration southtut --auto
     
  6. 应用models的改动到数据库
    ./manage.py migrate southtut
     

 

分享:Django数据库迁移组件(South)

评论(1):Django数据库迁移组件(South)

leopku #

好文章,一直想详细了解一下South

称呼(*)

网站

邮箱

右边是什么单词? python

# 建议上面的都填写,系统会自动记住的,且有头像和你的网站链接 (从 getavatar.com 获取头像)

Copyright© python.cn(news, jobs) simple-is-better.com, 技术驱动:powered by web.py 空间主机:Webfaction

版权申明:文章转载已注明出处,如有疑问请来信咨询。本站为 python 语言推广公益网站,与 python 官方没有任何关系,也与 python.cn 这个域名没有关系。

联系/投搞/留言: en.simple.is.better@gmail.com