Django資料庫查詢

2021-09-25 05:57:41 字數 1665 閱讀 4147

查詢集表示從資料庫中獲取的物件集合,在管理器上呼叫某些過濾器方法會返回查詢集,查詢集可以含有零個、乙個或多個過濾器。過濾器基於所給的引數限制查詢的結果,從sql的角度,查詢集和select語句等價,過濾器像where和limit子句。

返回查詢集的過濾器如下

返回單個值的過濾器如下

count():返回當前查詢結果的總條數。

aggregate():聚合,返回乙個字典。

判斷某乙個查詢集中是否有資料

兩大特性

查詢集的快取

每個查詢集都包含乙個快取來最小化對資料庫的訪問。

在新建的查詢集中,快取為空,首次對查詢集求值時,會發生資料庫查詢,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查詢資料庫

特殊過濾 django資料庫查詢時,一般就是 modelname.objects.a ll modelname.objects.filter modelname.objects.get 等等,在過濾時,如果過濾條件假設是其中的某一欄位,比如 id,要求id 5,或者是乙個範圍比如1 id 5,前者可...

django資料庫查詢

特殊過濾 django資料庫查詢時,一般就是 modelname.objects.a ll modelname.objects.filter modelname.objects.get 等等,在過濾時,如果過濾條件假設是其中的某一欄位,比如 id,要求id 5,或者是乙個範圍比如1 id 5,前者可...

Django資料庫查詢

1.django 資料庫查詢語句 2.django 列表頁 3.詳情頁 4.django 資料庫查詢語句 django的2.0版本之後,admin預設不建立超級使用者,我們要使用admin需要使用命令 python manage.py createsuperuser 使用者名稱郵箱 密碼 不顯示,兩...