2012-02-22 7 views
1

XMLファイルからレコードをインポートしていますが、メモリが不足しています。 XML ElementTreeを使って、すべての要素とサブ要素を作成して削除して、メモリをクリアしましたが、まだスタックしています。Django MemoryError XMLファイルから多くのデータをインポートしています

私はついに解決策を見つけましたが、将来同じ問題を抱える可能性がある他者のために、これをSOに入れたいと考えていました。私は答えをウェブで見つけていた。私はこれを見つけたときDjango MemoryError - How to work with large databases。私のMemoryErrorは、私のQuerysetのサイズのためではありません。なぜなら、それはそれほど大きくないからです。でも、とにかく試してみると思いました。私はすべてのオブジェクトを.all()をobjects.all()。iterator()に変更しました。それは私がオブジェクトの約3つの異なるセットをループしているだけで、それほど大きなセットはありませんでした。私は躊躇して、DEBUG=Trueをsettings.pyのDEBUG=Falseにしました。そして、メモリ使用量をほとんど何も削減しました! Djangoのドキュメントから:。

あなたがデバッグしているときには、便利ですDEBUGで実行されているがオンになったときに、Djangoはそれが実行されるすべてのSQLクエリを覚えているだろうことを覚えておくことも重要ですが、それは急速にメモリを消費します "

これは本番サーバーではなく、私の開発サーバーです。したがって、実行されたクエリはすべて保存されているので、どこに、どのように取得できますか?それらがデバッグに非常に役立つ場合、なぜそれらはより容易に利用できないのですか?ここで

答えて

1

は、クエリを表示する方法は次のとおりです。詳細については

from django.db import connection 
print connection.queries 

this faq entryを参照してください。

+0

素晴らしいDjangoの1.3.xの、男で、Djangoのログを経由してSQLクエリをログに記録することができます。それはかなりクールです。早速のご返事ありがとうございます。 – Furbeenator

1
+0

ありがとう、Sid。私はそこでそれをすることを考えなかった。 – Furbeenator

+0

@Furbeenator DEBUGをTrueに設定すると、django-loggingはすべてのSQLクエリをログに記録します。明示的に行う必要はありません。 – Sid

関連する問題