1

我正在从 XML 文件中导入记录,它正在消耗内存。我已经浏览了创建并删除了所有元素和子元素以清除内存的 XML ElementTree,但它仍然只是堆积起来。

我终于找到了解决方案,并希望在 SO 中为将来可能遇到相同问题的其他人提供此解决方案。当我偶然发现这个问题时,我正在网上搜索答案:Django MemoryError - How to work with large databases。我的 MemoryError 不是因为我的 Queryset 的大小,因为它们并没有那么大,但我想我还是会试一试。对于对象上的任何循环,我将所有 objects.all() 更改为 objects.all().iterator()。这并没有多大作用,因为我只循环了大约三组不同的对象,没有一个是巨大的。我不情愿地转向DEBUG=TrueDEBUG=Falsesettings.py ,它将内存使用量减少到几乎为零!来自 Django 文档:

"同样重要的是要记住,在打开 DEBUG 的情况下运行时,Django 会记住它执行的每个 SQL 查询。这在调试时很有用,但它会迅速消耗生产服务器上的内存。 "

这不是生产服务器,它是我的开发服务器。那么,由于所有执行的查询都存储了,它们在哪里以及如何获取它们?如果它们对调试很有帮助,为什么它们不更容易获得呢?

4

2 回答 2

1

以下是显示查询的方法:

from django.db import connection
print connection.queries

有关更多信息,请参阅此常见问题解答条目

于 2012-02-22T20:57:38.450 回答
1

您还可以通过 Django Logging 记录 sql 查询,至少在 Django 1.3.x 中

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

于 2012-02-22T21:08:41.613 回答