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 只有這樣你的下一步遷移才會正確執行。

    由於時間關系,其他的功能以后再做討論,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM