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