Djangoでローカルのdb.sqlite3のデータをファイル出力してherokuに入れる


ローカルの開発環境のDBはdb.sqlite3を使っている。
このDBのデータをherokuに移行して使いたい。
流れとしては
$ python manage.py dumpdata
を使ってダンプファイルを作成。
作ったダンプファイルをgitでherokuにデプロイしたうえで
$ heroku run python manage.py loaddata [ダンプファイル名]
とする。
The Heroku CLIをインストールしている前提。

dumpdataの使い方

基本形

$ python manage.py dumpdata > dump.json
これが基本形。
dump.jsonというファイル名で出力。
基本はJSONで出力されます。
model.pyで管理されているテーブルとadmin関連のテーブルを対象とする(はず)。

フォーマットの指定

python manage.py dumpdata --format=yaml > dump.yaml
YAML形式が良ければ--formatで指定する。
※YAMLを使う時はPyYAMLを追加しないと処理できない。

python manage.py dumpdata --format=xml > dump.xml
XML形式が良ければ--formatで指定する。

インデント

$ python manage.py dumpdata -–indent 2 > dump.yaml
何も指定しないと1行でずらっと出力されるので、整形したければ-–indentでインデントする。
深く検証していないけど数字だけ?2は半角スペース2つでインデント

ダンプするテーブルを指定

$ python manage.py dumpdata -–indent 2 map.prefecture > dump.yaml
テーブルを指定することができる。
上記はmapアプリのprefectureテーブルだけをダンプする。

$ python manage.py dumpdata -–indent 2 map.prefecture map.city > dump.yaml
当然複数テーブル指定可能。
上記はmapアプリのprefectureとcityという2つのテーブルをダンプする。

$ python manage.py dumpdata -–indent 2 –exclude map.prefecture > dump.yaml
基本全部ダンプでいいんだけど、一部のテーブルは除外したいという時は–-exclude