1

XMLファイルからレコードをインポートしていますが、メモリが不足しています。すべての要素とサブ要素を作成および削除してメモリをクリアするXMLElementTreeを確認しましたが、それでも積み重なってしまいます。

私はついに解決策を見つけました、そして将来同じ問題を抱えているかもしれない他の人のためにこれをSOに入れたいと思いました。私がこれに出くわしたとき、私は答えを求めてWebを精査していました:DjangoMemoryError-大規模なデータベースを操作する方法。私のMemoryErrorは、クエリセットのサイズが原因ではありません。クエリセットはそれほど大きくないためですが、とにかく試してみることにしました。オブジェクトのループについては、すべてのobjects.all()をobjects.all()。iterator()に変更しました。私は約3つの異なるオブジェクトのセットをループしているだけで、どれも巨大なセットではなかったので、それはあまり効果がありませんでした。私はしぶしぶsettings.pyに目DEBUG=Trueを向けましDEBUG=Falseた、そしてそれはメモリ使用量をほとんどゼロに減らしました!Django Docsから:

DEBUGをオンにして実行すると、Djangoは実行するすべてのSQLクエリを記憶することを覚えておくことも重要です。これはデバッグ時に役立ちますが、本番サーバーのメモリを急速に消費します。

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

4

2 に答える 2

1

クエリを表示する方法は次のとおりです。

from django.db import connection
print connection.queries

詳細については、このよくある質問のエントリを参照してください。

于 2012-02-22T20:57:38.450 に答える
1

少なくとも Django 1.3.x では、Django Logging を介して SQL クエリをログに記録することもできます。

https://docs.djangoproject.com/en/dev/topics/logging/

于 2012-02-22T21:08:41.613 に答える