gpt4 book ai didi

django - 使用列表推导式或 django 的 'values_list' 函数,哪种方法更有效?

转载 作者:行者123 更新时间:2023-12-01 11:46:58 26 4
gpt4 key购买 nike

当尝试从 django 对象返回值列表时,使用列表理解的性能会更好:

[x.value for x in Model.objects.all()]

或在 django 的 values_list 函数上调用 list():
list(Model.objects.values_list('value', flat=True))

为什么?

最佳答案

最有效的方法是采用第二种方法(使用 values_list() )。这样做的原因是,这会修改发送到数据库的 SQL 查询以仅选择提供的值。

第一种方法首先从数据库中选择所有值,然后再次过滤它们。因此,您已经“花费”了资源来使用该方法获取所有值。

您可以比较通过使用 str(queryset.query) 包装 QuerySet 生成的查询,它将返回执行的实际 SQL 查询。

请参阅下面的示例

class Model(models.Model):
foo = models.CharField()
bar = models.CharField()

str(Model.objects.all().query)
# SELECT "model"."id", "model"."foo", "model"."bar" FROM "model"

str(Model.objects.values_list("foo").query)
# SELECT "model"."foo" FROM "model"

关于django - 使用列表推导式或 django 的 'values_list' 函数,哪种方法更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55636405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com