Django 1.7 新數據遷移工具 (migrations) 的使用和如何從 South 升級轉換

在1.6以前, Django只支持添加新的model到數據庫, 而沒法編輯或修改已經存在的model. 在當時, 這些Django缺失的功能能夠經過South實現.python

按照官方文檔的說明,支持得最好的是postgresql數據庫,其次是mysql,目前sqlite不能實現完整的migration功能。mysql

1. 新的命令

Django 1.7 爲咱們帶來了三個新命令:sql

  • migrate: 用於執行遷移動做數據庫

  • makemigrations: 基於當前的model建立新的遷移策略文件django

  • sqlmigrate: 顯示遷移的SQL語句app

值得注意的是, migration是基於App的, 所以, 咱們能夠針對某些app不啓用migration功能.post

2. 如何使用

migrations的使用很是簡單: 修改model, 好比增長field, 而後運行spa

    python manager.py makemigrations

你的mmodel會被掃描, 而後與以前的版本做比較, 在app的migrations目錄下生成本次遷移文件.postgresql

咱們建議查看一下該遷移文件, 確保沒有問題. 而後運行:code

    python manager.py migrate

migrate命令會進行比較, 並應用該遷移.

3. 從South到新的Django migrations

若是想從south升級到最新的django migration, 能夠按如下步驟實現:

  • 確保south中的migration所有被應用了

  • 從 INSTALLED_APPS中移除south

  • 刪除每一個app下migration目錄中的全部文件, 除了__init__.py

  • 運行python manager.py makemigrations, Django會初始化migration

  • 運行python manager.py migrate, django會發現數據庫和初始化的migration相同, 從而將他們標記爲已應用

相關文章
相關標籤/搜索