社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DjangoApp

[精华] South:Django最好用的数据库Schema和数据迁移APP

Py站长 • 11 年前 • 12956 次点击  

South是目前Django最热门的APP之一。

它的主页是:http://south.aeracode.org/

我们在用 Django开发系统的时候常会遇到一个问题,那就是资料库的Schema 在开发的过程中有可能会变动,接着我们执行syncdb后会发现,原先存在的Model在修改Schema后并不会更新到数据库。

手动修改数据库太过麻烦了,但在数据中有数据的时候我们又不想整个删掉重来。这时候South就派上用场啦。

South可以自动帮我们搞定数据库 migrate 这个麻烦的工作,且可以让数据库做到版本控制。

下面简要介绍一下South的使用方法:

首先我们需要安裝 south 這個APP。

设定

  • 把 south 加到 settings.py 的 INSTALLED_APPS 中
  • 建立 south 的历史记录中 python manage.py syncdb
  • 在 你想要进行数据迁移的 app 中使用 south

    python manage.py convert_to_south <app_name>

完成后会发现在 你的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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/11
 
12956 次点击  
文章 [ 14 ]  |  最新文章 9 年前