2011-11-11 6 views

答えて

3

これにはDjangoを使用する必要はありません。 MySQLがあなたのためにそれを行うためのコマンドが含まれています

mysqldump -u USERNAME -pPASSWORD DATABASE_NAME > DATABASE_FILE.sql 
+0

これは動作しますが、カスタムダンプを即座に生成する必要があります。サブプロセスモジュールを使用してDjangoビューから直接このコマンドを実行することには問題がありますか? – davidscolgan

+0

実際には、2つの要求が同時に同じファイルに書き込もうとしていないことを保証するために、適切なロックが必要です。また、[options for mysqldump](http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html)を見てください。これは '--single-transaction'オプションと共に使用したいかもしれません。 –

0

エクスポートするテーブル構造が一定であれば(それはそうです)、テキスト出力としてそれを生成するためのテンプレートを書くのは簡単だろう。 Djangoテンプレート(HTML固有ではありません)または単に文字列補間を使用することができます。このような

何か:

def dump(w, qs): 
    for r in qs: 
     w.write ("insert into tablename (fieldA, fieldB, fieldC) values ('%s', '%s', %d);\n" % (
      quote(r.fieldA), quote(r.fieldB), int(r.fieldC))) 

fieldAfieldBが文字列であると仮定すると、fieldCは整数であり、quote()はMySQLの安全エスケープ関数です。 wパラメータはファイルのようなオブジェクトです(Django HttpResponseオブジェクトも可能です)。qsは必要なデータを含むクエリセットです。

関連する問題