Django框架學習 入門 查詢集(2 4)

2021-09-24 02:26:01 字數 1746 閱讀 8832

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

在文章 django入門 通過模型類查詢mysql資料庫基本操作中,我們知道函式all filter exclude order by 等的返回值都是queryset型別,對該型別的返回值可以繼續使用上述查詢函式。queryset型別具有一些特性 在使用返回值型別為queryset的函式進行查詢時,...

Django框架學習

執行開發web伺服器命令 python manage.py runserver 可加ip跟埠127.0.0.1 8000 模板設定 templates 鏈結mysql設定 databases import pymysql pymysql.install as mysqldb urlpatterns ...

django實戰 查詢(二)查詢集

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