Django での単体テストのために、データベース内の既存のデータを使用したいと考えています。データベースがテストするには大きすぎるため、データの一部をダンプしたいと考えています。
それらの一部をダンプする方法はありますか? (私のデータベースは MySQL です)
この部分models.MyModel.objects.all()
を変更して、フィクスチャで選択的なデータを取得できます。
from django.core import serializers
from myproject.myapp import models
data = serializers.serialize("json", models.MyModel.objects.all())
out = open("mymodel.json", "w")
out.write(data)
out.close()
dumpdataを使用する必要があります。
python manage.py dumpdata --format=json --indent=2 --exclude=admin --exclude=sessions > test_db.json
ここでは、adminテーブルとsessionsテーブル(おそらくこれらは必要ないかもしれません)を除くデータベース内のすべてを、という名前のjsonファイルにダンプしていますtest_db.json
。また、ファイルを目で確認しやすくするために、2つのスペースのインデントを使用しています。
mysqldumpの使用を試すことができます:
ダンプするテーブルのすべての名前を検索する必要があります。完全なリストを取得するには、次を使用できます。
mysqlshow db_name
次に実行します:
mysqldump db_name table_1 table_2 table_3 table_4
このコマンドは結果を標準出力に出力します。ファイルに書き込みたい場合は、--result-file=/path/to/file
mysqldump の完全なドキュメントも参照してください: http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html