django-cms学习笔记之安装篇——Django-South应用


Django-South使用


        South是针对Django提供的syncdb同步models和数据库不中而开发的数据迁移工具,可以做为syncdb的替代工具。South能够将Model类的更改同步到数据库中,免去了以前只能手工同步Model与数据表的辛苦。

      

         基本应用

        安装完成后,需要在项目中使用South。即在INSTALL_APPS中加入south应用

        首次使用South如下:

       

python manage.py schemagration youapp --install

#--install 会在数据库中创建models中定义的数据表和suth需要的South_migrationhistory表,会在你的youapp目录下创建一个migration子目录

python manage.py schemamigration youapp --auto #检查对models的更改

python manage.py migrate youapp #将更改两步到数据表中


迁移到South

        对于已经存在的项目(定义了models,创建了相应的数据表对象,保存了数据),这时想要使用South替代原来的syncdb需要如下步骤:

  1. INSTALL_APPS中加入south应用
  2. 运行如下代码:
    python manage.py syncdb  #syncdb是将south_migrationhistory表写入数据库
    
    python manage.py convert_to_south youapp #在youapp目录下创建migrations目录及迁移所需



常见问题

1. 添加和删除字段时可能会要求输入 default value(django里面models里面的许多字段默认都是null=False)
     对于添加字段,输入的默认值必须和models定义的类型匹配,否则同步数据库的时候会报错
     对于删除字段的情况,可以随意输入一个value而不管字段的默认类型,可以实现删除,但是并不可取,具体原因可以参见South的实现机制(rollback到删除字段之前会失败)。

2. 杀手锏
     如果South在同步数据库的过程中出现错误,则migrations目录下面对应此次更改的python文件不会被执行,可以运行python manage.py migrate --list查看没有执行的py文件,文件名前面没有*表示该文件对应的更改没有反应到数据库,只需删除掉这些有问题的migrate,参照错误提示修改 models再同步即可,也可以直接更改对应的py文件修复错误



参考的博客


      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值