django實戰 查詢(二)查詢集

2021-10-24 07:39:03 字數 1714 閱讀 3594

查詢集表示從資料庫中獲取的物件集合,在管理器上呼叫某些過濾器方法會返回查詢集,查詢集可以含有零個、乙個或多個過濾器。過濾器基於所給的引數限制查詢的結果,從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 查詢過濾器在這裡的存在就是...