Django MemoryError从XML文件导入大量数据

时间:2012-02-22 20:51:53

标签: django memory django-settings

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

我终于找到了一个解决方案,并希望将其用于其他可能在将来遇到同样问题的人。当我偶然发现这个问题时,我正在网上寻找答案:Django MemoryError - How to work with large databases。我的MemoryError不是因为我的Queryset的大小,因为那些不是那么大,但我想我还是试一试。我将所有的objects.all()更改为对象上的任何循环的objects.all()。iterator()。这并没有做太多,因为我只是在三个不同的对象集上循环,没有一个巨大的集合。我在settings.py中不情愿地将DEBUG=True变为DEBUG=False,并将内存使用量减少到几乎为零!来自Django Docs:

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

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

2 个答案:

答案 0 :(得分:1)

以下是显示查询的方法:

from django.db import connection
print connection.queries

有关详细信息,请参阅this faq entry

答案 1 :(得分:1)

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

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