Django数据库迁移

    如果你用过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 只有这样你的下一步迁移才会正确执行。

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

posted @ 2013-09-28 19:31  枫桦宁  阅读(4430)  评论(0编辑  收藏  举报