Django QuerySet快取和惰性機制

2022-08-21 22:39:14 字數 784 閱讀 5893

惰性機制:

在內部。queryset在構造,過濾,切片,傳遞的時候通常查詢集不會真正的去資料庫查詢

那它會在什麼情況下去資料庫查詢呢?

1.迭代(通過迴圈將值乙個個拿出來)

2.切片,使用切片語法的step(步長切片)引數,或者是切片只切出乙個元素的時候,django將執行資料庫查詢,

3.直接在控制台列印的時候

4.使用len()方法獲取長度的時候,底層呼叫count

5.使用list()方法轉換型別

6.通過if,else去判斷是否為空的時候

7. 序列化快取,把查詢集的內容存在reis或者記憶體中

解釋完惰性機制,在來說說快取,只要重複利用好這個特性,將會提高**的質量

1.會在什麼時候快取呢?

在只執行乙個queryset的時候,將會將查詢結果快取在這個物件,後面再查詢這個queryset,會從快取中獲取,而不去資料庫

值得注意的是,在新建立的queryset的快取中,快取是空的

users =user.objects.all()

for item in

users:

print

(item.mobile)

users.mobile

2.什麼時候不快取

a.使用陣列切片或者索引不會快取

b.簡單的列印不快取   

users =user.objects.all()

print(users[0].mobile) #

這種情況是不會快取的

django queryset合併問題

今天在實現搜尋時遇到乙個問題,如何同時搜尋model裡面的title以及content和category字典 contents blog.objects.filter content contains content titles blog.objects.filter title contains...

Django QuerySet的分頁和排序

資料查詢分頁功能和排序功能大家都很熟悉,本文以乙個小例子介紹一下django後台實現 id依次從6到1 detail this is test createtime 2016 05 22 00 06 36 modifytime 2016 05 22 00 06 36 isdelete false t...

django QuerySet物件轉換成字典物件

今天做乙個新增購物車的模組,在新增商品之前要先驗證使用者是否處於登入狀態,前台用ajax非同步傳送請求,後台在接收到請求後從session中取出使用者登入資訊。根據登入資訊從使用者表中查詢出對應使用者,再將狀態碼和使用者資訊返回到前台,這裡查詢出來的使用者是個實體物件,需要先將它轉換為字典後再轉換為...