如果你用過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 只有這樣你的下一步遷移才會正確執行。
由於時間關系,其他的功能以后再做討論,
