1. 程式人生 > >django查詢集-17

django查詢集-17

數據庫 操作 過濾器 支持 索引 處理 特性 集合 緩存

當查詢結果是多個的時候,django-ORM會返回一個 查詢集(QuerySet) ,表示從數據庫中獲取對象的 集合

查詢集可以使用過濾器進行再次處理。

例如查詢閱讀量大於20且評論數大於30的書

>>> book = Book.objects.filter(b_read__gt=20)
>>> book.filter(b_comment__gt=30)
<QuerySet [<Book: 天龍八部>]>

因為查詢集類似一個集合,所以可以對查詢集進行取下標或者切片等操作(索引不支持負數)。

查詢閱讀數大於20的結果,再取下標為1 的數據。

>>> book = Book.objects.filter(b_read__gt=20)
>>> book[1]
<Book: 雪山飛狐>

查詢集兩大特性

1. 惰性執行

創建查詢集不會訪問數據庫,直到調用數據時,才會訪問數據庫,調用數據的情況包括叠代、序列化、與if合用

2. 緩存

使用同一個查詢集,第一次使用時會發生數據庫的查詢,然後Django會把結果緩存下來,再次使用這個查詢集時會使用緩存的數據,減少了數據庫的查詢次數。

django查詢集-17