Python Django:在没有缓存的情况下迭代查询集

Python Django:在没有缓存的情况下迭代查询集,python,django,caching,Python,Django,Caching,我有一个愚蠢的简单循环 for alias in models.Alias.objects.all() : alias.update_points() 但是查看django查询集,它似乎保留了以前所有结果的\u结果\u缓存。这是吃我的机器,最终一切都爆炸了 我怎样才能扔掉所有我不关心的东西?使用queryset的方法以块的形式返回模型,而不填充结果缓存: for alias in models.Alias.objects.iterator() : alias.update_po

我有一个愚蠢的简单循环

for alias in models.Alias.objects.all() :
    alias.update_points()
但是查看django查询集,它似乎保留了以前所有结果的
\u结果\u缓存。这是吃我的机器,最终一切都爆炸了

我怎样才能扔掉所有我不关心的东西?

使用queryset的方法以块的形式返回模型,而不填充结果缓存:

for alias in models.Alias.objects.iterator() :
    alias.update_points()

您应该考虑将更改保存回数据库。

for alias in models.Alias.objects.all() :
    alias.update_points()
    alias.save()

当我打你的电话时,它还在啃着一吨公羊(事实上,mysql查询是缓冲的,这导致了所有的ram问题。您是否尝试将调试设置为False?这比使用迭代器更有用:)如果您使用的是Postgresql,升级到Django 1.11并将DISABLE_SERVER_SIDE_CURSORS设置为False将提高RAM效率:尽量不要将alias用作变量名—它是一个关键字