Django學習--查詢集QuerySet
阿新 • • 發佈:2018-11-17
查詢結果集兩大特性 ==惰性== ==快取==
惰性
建立查詢集不會訪問資料庫,直到呼叫資料時,才會訪問資料庫,呼叫資料的情況包括迭代、序列化、與if合用
例如,當執行如下語句時,並未進行資料庫查詢,只是建立了一個查詢集books
books = BookInfo.objects.all()
繼續執行遍歷迭代操作後,才真正的進行了資料庫的查詢
for book in books:
print(book.name)
快取
我們將查詢結果集賦值給一個物件,每次都可以從物件裡獲取資料,只有第一次的時候,才會執行查詢資料庫操作,之後的獲取資料操作,都不會查詢資料庫
限制查詢集
可以對查詢集進行取下標或切片操作,等同於sql中的limit和offset子句。
注意:不支援負數索引。
對查詢集進行切片後返回一個新的查詢集,不會立即執行查詢。
如果獲取一個物件,直接使用[0],等同於[0:1].get(),但是如果沒有資料,[0]引發IndexError異常,[0:1].get()如果沒有資料引發DoesNotExist異常。
示例:獲取第1、2項,執行檢視。
>>> books = BookInfo.objects.all()[0:2] >>> books <QuerySet [<BookInfo: 射鵰英雄傳>, <BookInfo: 天龍八部>]>