DjangoでDBのスキーマ変更 ~ sqlite
Djangoのmodels.pyを変更したあと、python manage.py syncdbで変更が反映されない。
データが既に入っているときにスキーマを変更するのはまずいので、普通に考えたら当然。
一度、DBのデータを別ファイルに保存した後に、データをリセット、スキーマが更新されたら、保存しておいたデータを流し込む。
という流れをコマンドでできると思ったけど、データをリセットする部分(python manage.py flush)はsyncdbの直後まで戻すコマンドなので、スキーマの変更はできない。
きれいにやるにはSouthを使うと良いらしい。(今度やる)
今回は、sqliteをファイルごと更新した。
DBのデータを別ファイルに保存
$ python manage.py dumpdata appname --indent=4 > appname.json
デフォルトはjsonで吐き出される。