Djangoでダンプを作成したいのですが、使用しているデータベースに関係なく、後でロードできます。コマンド 'dumpdata'はこれに最適ですが、コンソールに出力を出力します。 call_command関数を使用して呼び出しているため、コンソールに出力を出力しているため、その内容を変数に格納できません。
Dumpdataまたはその他のコマンドやAPIを使用してダンプをファイルに保存する方法を教えてください。
ありがとう
あなた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スクリプト内で呼び出す必要があります。コマンドラインオプションとして使用する場合は、リダイレクト(他の人が提案しているように)は次のようになります。あなたの最善の策。
あなたはそれをそのように使うだけです:
./manage.py dumpdata > data_dump.json
そのアクションの後、そのコマンドを実行したディレクトリにdata_dump.json
ファイルがあります。
これには複数のオプションがありますが、おそらくすでにご存知でしょう。知っておく必要があるのは、次の方法です標準出力から何らかのファイルに出力をリダイレクトする:ファイル名の前に>
を付けることでそのアクションを実行します。
ファイルに何かを追加するには、>>
を使用しますが、Djangoからデータをダンプし、出力はJSONである可能性が高いため、それは必要ありません( JSONを無効にします)。
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
Linuxでは、コンソール出力をファイルにパイプするだけです。
manage.pydumpdata>ファイル