django中south做数据迁移

syncdb是db synchronization的缩写,意思是数据库同步。
 
syncdb 命令是同步你的模型到数据库的一个简单方法。 它会根据 INSTALLED_APPS 里设置的app来检查数据库, 如果表不存在,它就会创建它。 需要注意的是, syncdb 并不能将模型的修改或删除同步到数据库;如果你修改或删除了一个模型,并想把它提交到数据库,syncdb并不会做出任何处理。
 
如果你再次运行 python manage.py syncdb ,什么也没发生,因为你没有添加新的模型或者添加新的app。因此,运行python manage.py syncdb总是安全的,因为它不会重复执行SQL语句。
知识总结:迁移( migrations?)

Django 的第三方 app South 就是专门做数据库表结构自动迁移工作,Jacob Kaplan-Moss 曾做过一次调查,South 名列最受欢迎的第三方 app。事实上,它现在已经俨然成为 Django 事实上的数据库表迁移标准,很多第三方 app 都会带 South migrations 脚本。


快速指南
pip install south
1、安装完South之后,要在django项目中使用South,先要将South作为一个App导入项目,所以设置INSTALL_APP添加south 第一次使用South。
 
2、manage.py syncdb 用来创建south_migrationhistory表。
 
3、manage.py convert_to_south youappname #在youappname目录下面创建migrations目录以及第一次迁移需要的0001_initial.py文件
 
4、如果改变了model里的内容,./manage.py schemamigration youappname --auto #检测对models的更改
 
manage.py migrate youappnam #将更改反应到数据库 (如果出现表已存在的错误,后面加 --fake)



运行效果如下

第 1 步,生成表结构的初始版本,执行下面的命令后,会自动创建 your_app/migrations 目录并生成 0001_initial.py 脚本:
./manage.py schemamigration your_app --initial
第 2 步,如果数据库中已经存在 your_app 的表结构,则需要通过 --fake 命令告诉 South:
./manage.py migrate your_app --fake
若不存在,用下面命令在数据库中创建表结构:
./manage.py migrate your_app

增加 Model 字段
为 your_app/models.py 增加字段后,执行下面的命令 South 会自动比对 0001_initial.py 并生成 0002_auto__xxxx.py:
./manage.py schemamigration your_app --auto
下面的命令便是立即修改数据库,使新的表结构版本生效:
./manage.py migrate your_app


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值