diango中orm的惰性機制

2022-08-19 12:45:07 字數 2750 閱讀 1861

那麼首先要知道什麼是orm

那具體orm是什麼呢?:(在django中,根據**中的類自動生成資料庫的表也叫--code first)orm:

orm在物件導向模型與關係模型之間架起橋梁。

通過物件與資料庫之間對映的元資料,自動透明地把編譯語音中的物件持久化到關聯式資料庫裡,對資料庫的操作可以轉換為對物件的操作

orm 有下面這些優點。

但是,orm 也有很突出的缺點。

django惰性機制

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

惰性機制之可迭代12

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

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

#     print("obj:",obj)

惰性機制之可切片12

34# 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會從快取中取出資料,影響最後的查詢結果

那具體orm是什麼呢?:(在django中,根據**中的類自動生成資料庫的表也叫--code first)orm:

orm在物件導向模型與關係模型之間架起橋梁。

通過物件與資料庫之間對映的元資料,自動透明地把編譯語音中的物件持久化到關聯式資料庫裡,對資料庫的操作可以轉換為對物件的操作

orm 有下面這些優點。

但是,orm 也有很突出的缺點。

django惰性機制

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

惰性機制之可迭代12

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

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

#     print("obj:",obj)

惰性機制之可切片12

34# 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會從快取中取出資料,影響最後的查詢結果

ORM的惰性機制

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

Django中ORM的惰性機制

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

Diango中的查詢條件

屬性 運算子 值 1 gt 大於 2 lt 小於 3 gte 大於等於 4 lte 小於等於 5 in 表示在某一集合中。6 contains 是否包含,對大小寫敏感,相當於like。查詢名字中包含a的人 a persons persons.filter p name icontains a h3 ...