ORM的惰性機制

2022-08-20 04:24:06 字數 929 閱讀 4410

django惰性機制

所謂惰性機制:publisher.objects.all()或者.filter()等都只是返回了乙個queryset(查詢結果集物件),它並不會馬上執行sql,而是當呼叫queryset的時候才執行。

惰性機制之可迭代

#

objs=models.book.objects.all() # [obj1,obj2,ob3...]

#for obj in objs: # 每一obj就是乙個行物件,此時會執行sql

#print("obj:",obj)

惰性機制之可切片

惰性機制之可切片

#

objs=models.book.objects.all() # [obj1,obj2,ob3...]

#print(objs[1])

#print(objs[1:4])

#print(objs[::-1])

惰性機制之django快取問題

django有自己的快取,如果2次的obj物件一致,第二次的查值直接從快取中取值。

如果期間資料庫的內容作了更改,則需要重新查值。否則容易產生髒資料。

可以直接利用第一次的obj物件直接進行update操作,這樣下次for迴圈查詢時又重新執行了資料庫查詢操作,此時快取也作了更改; 也可以重新手動查詢一下結果,但是不推薦這樣,因為我們並不知道資料什麼時候會進行修改,妥善的還是django用資料時自己去查詢資料結果

注意:如果2次操作之間有資料進行了修改 ,則需要重新從資料庫中查值,否則django會從快取中取出資料,影響最後的查詢結果。

diango中orm的惰性機制

那麼首先要知道什麼是orm 那具體orm是什麼呢?在django中,根據 中的類自動生成資料庫的表也叫 code first orm orm在物件導向模型與關係模型之間架起橋梁。通過物件與資料庫之間對映的元資料,自動透明地把編譯語音中的物件持久化到關聯式資料庫裡,對資料庫的操作可以轉換為對物件的操作...

Django中ORM的惰性機制

django惰性機制 所謂惰性機制 publisher.objects.all 或者.filter 等都只是返回了乙個queryset 查詢結果集物件 它並不會馬上執行sql,而是當呼叫queryset的時候才執行。惰性機制之可迭代12 3 objs models.book.objects.all ...

Django 惰性機制

惰性機制 publisher.objects.all 或者.filter 等都只是返回了乙個queryset 查詢結果集物件 它並不會馬上執行sql,而是當呼叫queryset的時候才執行sql,為了測試,我們加上 sql 日誌。在 settings.py 檔案上修改 在最後新增 logging l...