web-dev-qa-db-ja.com

django)でdbダンプファイルを作成する方法

Djangoでダンプを作成したいのですが、使用しているデータベースに関係なく、後でロードできます。コマンド 'dumpdata'はこれに最適ですが、コンソールに出力を出力します。 call_command関数を使用して呼び出しているため、コンソールに出力を出力しているため、その内容を変数に格納できません。

Dumpdataまたはその他のコマンドやAPIを使用してダンプをファイルに保存する方法を教えてください。

ありがとう

19
Paritosh Singh

あなたcancall_commandを使用してPython)内から呼び出す場合、dumpdataの出力を入れるファイルを選択します。例:

from Django.core.management import call_command

output = open(output_filename,'w') # Point stdout at a file for dumping data to.
call_command('dumpdata','model_name',format='json',indent=3,stdout=output)
output.close()

ただし、コマンドラインからこれを呼び出そうとすると、 dumpdataコマンドの最後に--stdout=filename.jsonを指定すると、エラーmanage.py: error: no such option: --stdoutが発生します。

つまり、コマンドラインではなくPythonスクリプト内で呼び出す必要があります。コマンドラインオプションとして使用する場合は、リダイレクト(他の人が提案しているように)は次のようになります。あなたの最善の策。

23
bouteillebleu

あなたはそれをそのように使うだけです:

./manage.py dumpdata > data_dump.json

そのアクションの後、そのコマンドを実行したディレクトリにdata_dump.jsonファイルがあります。

これには複数のオプションがありますが、おそらくすでにご存知でしょう。知っておく必要があるのは、次の方法です標準出力から何らかのファイルに出力をリダイレクトする:ファイル名の前に>を付けることでそのアクションを実行します。

ファイルに何かを追加するには、>>を使用しますが、Djangoからデータをダンプし、出力はJSONである可能性が高いため、それは必要ありません( JSONを無効にします)。

27
Tadeck

Django-admin.py dumpdata

指定されたアプリケーションに関連付けられたデータベース内のすべてのデータを標準出力に出力します。

ご存知のように、ファイルへの標準出力は リダイレクト できます。

command > file.data
4
dani herrera

docs で言及されているように、大きなデータセットをダンプするために、問題を引き起こすセクションを回避し、それらを別々に扱うことができます。

次のコマンドは通常は機能します。

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

python manage.py loaddata db.json

後で除外されたデータをエクスポートできる場合:

python manage.py dumpdata auth.permission > auth.json

python manage.py loaddata auth.json
3
Evhz

Linuxでは、コンソール出力をファイルにパイプするだけです。

manage.pydumpdata>ファイル

0
stryderjzw