South 使ってみた
Django 用の schema migration ツール。 models.py
を書き換えた後の、データベースの方の同期をいい感じにやってくれる。
もう既にある django アプリケーションで south を利用する(し始める)流れ。
インストール
virtualenv な環境へ入れたので pip
を使う:
$ pip install south
django な project への設定
settings.py
のINSTALLED_APPS
に'south'
を追加python manage.py syncdb
で south なテーブルを作成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
他環境(本番環境)への反映
こっからは実際にやったわけではない。多分こんな感じになるんじゃないかなー。
myapp/migrations
をコピー。最初の初期化用 migration は不要なので、
python manage.py migrate myapp 0001 --fake
で当てたことにする。python manage.py migrate myapp