South是目前Django最热门的APP之一。
它的主页是:http://south.aeracode.org/
我们在用 Django开发系统的时候常会遇到一个问题,那就是资料库的Schema 在开发的过程中有可能会变动,接着我们执行syncdb后会发现,原先存在的Model在修改Schema后并不会更新到数据库。
手动修改数据库太过麻烦了,但在数据中有数据的时候我们又不想整个删掉重来。这时候South就派上用场啦。
South可以自动帮我们搞定数据库 migrate 这个麻烦的工作,且可以让数据库做到版本控制。
下面简要介绍一下South的使用方法:
首先我们需要安裝 south 這個APP。
设定
完成后会发现在 你的APP目录下多出一个migrations文件夹,里面会有一个0001_initial.py文件。表示已经成功转换成south了。
使用
-
當修改完 schema 需要做 migrate 時,執行
python manage.py schemamigration <app_name> <migration_name> --auto
這個指令會自動檢查欄位的更動,並詢問一些問題,完成後在 migrations 目錄下會出現
<version#>_<migration_name>.py
-
修改到資料庫
python manage.py migrate
回復之前版本
- 在每次執行完 schemamigration 後,migrate 目錄下的版本號 <version#> 會從 0001, 0002 一直增加上去 。 當需要回復到先前的版本時,只要執行
python manage.py migrate <app_name> <version#>
完成後,資料庫就會回到先前的版本了
但切到欄位少的版本再切回來...資料表中消失的資料當然是不會再回來的
参考: http://techblog.insureme.com.tw/2012/02/south-django-migrate-database.html