Django でデータをダンプ/ロードする

B!

目次

はじめに

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 が異なっているようです。

参考

django-admin と manage.py | Django documentation | Django


最新の記事はこちらから