
目次
はじめに
Django で運用しているデータを開発環境で使いたい時や、複数の開発環境で同じデータを使いたい時など、データベース間でデータをコピーする必要が有ります。Django の manage.py には、この目的に使える便利なコマンドがありますので紹介します。
データをダンプする
manage.py dumpdata を使うと、Django で利用している全データを json ファイルにダンプする事ができます。
(例) python manage.py dumpdata > ~/tmp/myapp.json
上記で、~/tmp/myapp.json にデータがダンプされます。
データをロードする
先程の myapp.json を別の PC にロードする場合には、manage.py loaddata が使えます。
(例) python manage.py loaddata ~/tmp/myapp.json
上記では、別の PC でダンプした myapp.json を ~/tmp に配置しておき、新しい開発環境にロードしています。
(データベースの作成と migrate の実行はあらかじめ済ませておく必要があります。)
データをクリアする
データベースのデータをクリアするためには、 manage.py sqlflush で生成される SQL を実行します。これは、下記のコマンド一行で実施できます。
python manage.py sqlflush | python manage.py dbshell
本当は manage.py flush を実施すれば良いはずなのですが、私の環境 (Django 2.0.1, PostgreSQL 10.4) では IntegrityError が発生してしまいました。sqlflush で生成される SQL と flush で実行する SQL が異なっているようです。