1. 程式人生 > >理解django中的QuerySet兩大特性:惰性執行和快取

理解django中的QuerySet兩大特性:惰性執行和快取

1.什麼時候返回QuerySet物件?

Django的ORM中存在查詢集的概念。

查詢集,也稱查詢結果集、QuerySet,表示從資料庫中獲取的物件集合。

當呼叫如下過濾器方法時,Django會返回查詢集(而不是簡單的列表):

  • all():返回所有資料。
  • filter():返回滿足條件的資料。
  • exclude():返回滿足條件之外的資料。
  • order_by():對結果進行排序。

 2.查詢集特性:

一:惰性執行

books = BookInfo.objects.all() # 此時,資料庫並不會進行實際查詢
# 只有當真正使用時,如遍歷的時候,才會真正去資料庫進行查詢
for b in books:
    print(b)

二:快取

# 進行資料庫實際查詢遍歷,儲存結果到bs,會進行資料庫實際互動
bs = [b.id for b in BookInfo.objects.all()]

# 再次呼叫快取結果bs,不再進行資料庫查詢,而是使用快取結果
print(bs) # [1, 2, 3, 4, 5, 6, 7, 10]