memo

2010-12-21

South 使ってみた

http://south.aeracode.org/

Django 用の schema migration ツール。 models.py を書き換えた後の、データベースの方の同期をいい感じにやってくれる。

もう既にある django アプリケーションで south を利用する(し始める)流れ。

インストール

virtualenv な環境へ入れたので pip を使う:

$ pip install south

django な project への設定

  1. settings.pyINSTALLED_APPS'south' を追加

  2. python manage.py syncdb で south なテーブルを作成

  3. python manage.py convert_to_south myapp で myapp の migration の初期化

Migration の生成

models.py 変更後に:

$ python manage.py schemamigration myapp --auto

で migration 用のコードを自動生成してくれる。

デフォルト値の指定の必要な変更にあたったらプロンプトを出してくる。 2. Specify a one-off value to use for existing columns now を選ぶとpython なプロンプトが出てきて、 任意の python code をデフォルト値として指定できる。

models.ForeignKey なヤツへのデフォルト値は、対象の primary key で問題なさそう。

Migration

$ python manage.py migrate myapp

他環境(本番環境)への反映

こっからは実際にやったわけではない。多分こんな感じになるんじゃないかなー。

  1. myapp/migrations をコピー。

  2. 最初の初期化用 migration は不要なので、 python manage.py migrate myapp 0001 --fake で当てたことにする。

  3. python manage.py migrate myapp