【问题标题】:is ValuesQuerySet an evaluated form of queryset?ValuesQuerySet 是查询集的评估形式吗?
【发布时间】:2015-03-08 12:17:47
【问题描述】:

当您对查询集执行某些操作(例如 len 或 slicing)时,您会点击 DB 并评估查询。

values() or values_list() 返回的 ValuesQuerySet 是否已经评估? 即它是否已经击中 DB?

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    不,ValuesQuerySet 未评估:

    >>> from app.models import *
    >>> from django.db import connection
    >>> qs = Question.objects.all().values()
    >>> len(connection.queries) # no db hit
    0
    >>> v = list(qs)
    >>> len(connection.queries) # db hit
    1
    

    【讨论】:

    • len(connection.queries) 是否返回 DB 点击数?
    • 是的。 connection.queries 包含在当前连接中执行的 SQL 查询列表。
    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 2017-04-03
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多