为什么访问Django QuerySet变得非常慢?

2024-10-03 11:24:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django中有一个模型查询:

Query = Details.objects.filter(name__iexact=nameSelected)

我以后会过滤它:

Query2 = Query .filter(title__iexact=title0)

然后,我使用以下方式访问它:

...Query2[0][0]...

几天前,它工作得很快。但现在它至少慢了20倍。 我在另一台电脑上测试,它工作得很快

更新:过滤不是延迟的原因,查询[0][0]是原因。 除此之外,它突然变得非常慢,而不是随着时间的推移

是什么让我的第一台电脑速度如此之慢


Tags: djangoname模型objectstitle方式原因details
2条回答

最好的方法是避免过滤查询的循环。我所做的是创建一个hashmap字典

dict0 = {}

然后,我在查询中添加了与该项对应的项和数据列表:

dict0 = dict(zip(title0List, DataList))

最后,我使用dict0而不是query,它将速度提高了至少10倍)

也许您可以在创建Queryset时尝试从它中创建一个列表,这样您就有了一个真正的列表,而不仅仅是一个懒惰的QS

Query2 = list(Query .filter(title__iexact=title0))

相关问题 更多 >