ローカルのdb.sqlite3のデータをherokuにコピーする。

ローカルの開発環境ではdb.sqlite3を使っている。
テストデータといっても、本番と変わらないデータが入っているので、これをherokuのDBに流し込みたい。

DjangoにはFixtureという機能が付いている。
YamlやJSON形式で作成したデータをDBに流し込む仕組み。

fixturesというディレクトリにファイルを格納し

$ python manage.py loaddata ファイル名

のようにコマンドを実行する。

流し込むファイル自体を作るコマンドがある。

$python manage.py dumpdata > dump.json

を実行するとdump.jsonというファイルを生成してくれる。

が、これで作成したファイルをloaddataするとエラーが出る。
存在しているテーブル全てをdump.jsonに含めているが、中にはどうやら不要なテーブルも存在していて、それは除外する必要があるようだ。

Monotalkの記事を参考にしました。

python manage.py dumpdata --exclude auth.permission --exclude contenttypes > dump.json

不要なテーブルを除外するオプションが追加されている。

これを

$ git add fixutures/dump.json
$ git commit -m  'コメント'
$ git push heroku master
$ heroku run python manage.py loaddata dump.json

すれば

Running python manage.py loaddata dump.json on ⬢ アプリ名… up, run.8075 (Hobby)
Installed 566 object(s) from 1 fixture(s)

のように正常に登録ができる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です