查詢集表示從資料庫中獲取的物件集合,在管理器上呼叫某些過濾器方法會返回查詢集,查詢集可以含有零個、乙個或多個過濾器。過濾器基於所給的引數限制查詢的結果,從sql的角度,查詢集和select語句等價,過濾器像where和limit子句。
返回查詢集的過濾器如下:
返回單個值的過濾器如下:
count():返回當前查詢結果的總條數。
aggregate():聚合,返回乙個字典。
判斷某乙個查詢集中是否有資料:
兩大特性
list
=bookinfo.objects.
all(
)
查詢集的快取每個查詢集都包含乙個快取來最小化對資料庫的訪問。
在新建的查詢集中,快取為空,首次對查詢集求值時,會發生資料庫查詢,django會將查詢的結果存在查詢集的快取中,並返回請求的結果,接下來對查詢集求值將重用快取中的結果。
演示:執行專案shell。
python manage.py shell
情況一:如下是兩個查詢集,無法重用快取,每次查詢都會與資料庫進行一次互動,增加了資料庫的負載。
情況二:經過儲存後,可以重用查詢集,第二次使用快取中的資料。
限制查詢集
可以對查詢集進行取下標或切片操作,等同於sql中的limit和offset
子句。
注意:不支援負數索引。對查詢集進行切片後返回乙個新的查詢集,不會立即執行查詢。
如果獲取乙個物件,直接使用[0],等同於[0:1].get(),但是如果沒有資料,[0]引發indexerror異常,[0:1].get()如果沒有資料引發doesnotexist異常。示例:獲取第1、2項,執行檢視。
list=bookinfo.objects.all(
)[0:2]
Django入門 查詢集QuerySet介紹
在文章 django入門 通過模型類查詢mysql資料庫基本操作中,我們知道函式all filter exclude order by 等的返回值都是queryset型別,對該型別的返回值可以繼續使用上述查詢函式。queryset型別具有一些特性 在使用返回值型別為queryset的函式進行查詢時,...
Django框架學習 入門 查詢集(2 4)
查詢集表示從資料庫中獲取的物件集合,在管理器上呼叫某些過濾器方法會返回查詢集,查詢集可以含有零個 乙個或多個過濾器。過濾器基於所給的引數限制查詢的結果,從sql的角度,查詢集和select語句等價,過濾器像where和limit子句。返回查詢集的過濾器如下 返回單個值的過濾器如下 count 返回當...
django 資料庫的查詢集
1.curd 增刪改查 對於資料庫,作為一名開發人員並不會感到陌生,那麼資料庫中的查詢集是怎麼一回事呢?2.資料庫的查詢集 對查詢集可以再次呼叫過濾器進行過濾,如 bookinfo.objects.filter bread gt 30 order by bpub date 查詢過濾器在這裡的存在就是...