我需要使用django reset_queries()

时间:2012-02-09 11:30:30

标签: python django orm django-models memory-leaks

我正在使用django 1.3,我正在运行Web上下文之外的脚本(从命令行) 我的代码每次都会从数据库中读取10000个条目 我注意到随着时间的推移,这个过程的内存使用量越来越大 我的代码是:

def getData(startIndex,chunkSize):
    dataList =Mydata.objects.filter(update_date__isnull = True)[startIndex:startIndex+chunkSize]
    return list(dataList)

if __name__ == '__main__':
   chunkSize = 10000
   startIndex = 0
   dataSize = Mydata.objects.filter(update_date__isnull = True).count()
   while startIndex < dataSize:
       dataList = getData(startIndex,chunkSize)
       startIndex += chunkSize
       do_stuff(dataList)

我的问题是:我是否需要使用reset_queries()和/ connection.close()
这是内存使用量增加的原因吗?

1 个答案:

答案 0 :(得分:1)

我首先要在查询中使用onlydefer方法。这两个用于仅检索您实际需要的字段,而不是所有字段。您的查询会稍微快一点,占用的内存也会减少,因为不会从数据库中获取所需的字段。