django 中QuerySet特性功能詳解
Book表的數(shù)據(jù)顯示
id title price publish_id 2 Linux 30 1 3 項塔蘭 45 2 4 追風箏的人 39.9 3 5 富爸爸 23 10
創(chuàng)建queryset 視圖 函數(shù), 可以使用的列表的方法,按索引,切片的方法取值,得到一個列表對象
def queryset(request): ret1 = Book.objects.all()[0] #QuerySet支持索引,切片操作 # print(ret1) #linux 得到一個具體的對象 ret2 = Book.objects.all()[1:3] # print(ret2)#<QuerySet [<Book: 項塔蘭>, <Book: 追風箏的人>]> # ret3 = Book.objects.all()[:2] ret4 = Book.objects.all()[::2]# 按步長取,隔一個取一個,,,[::1}挨著取,一個個都取 # print(ret3)#<QuerySet [<Book: Linux>, <Book: 項塔蘭>]> print(ret4)#[<Book: Linux>, <Book: 追風箏的人>]
-----
可迭代特性, iterator() ,exists()
主要是QuerySet的緩存機制,如果一次從數(shù)據(jù)庫取出很多數(shù)據(jù),就有可能導(dǎo)致程序崩潰,可以利用iterator()方法,做性能優(yōu)化,
為了判斷獲取到的對象是否有值,沒有必要遍歷所有的對象,用exists()方法()
#可迭代特性 book_list = Book.objects.all() #取出數(shù)據(jù)庫的所有對象,要考慮cache機制,如果數(shù)據(jù)量太大,程序就會崩潰 #判斷book_list 是否有值,假如有很多數(shù)據(jù),就沒有必要全部查一遍才得知有數(shù)據(jù),只要查到有1條數(shù)據(jù),就可以知道book_list有數(shù)據(jù),就用exists()方法 if book_list.exists(): print('ok') #ok ,說明數(shù)據(jù)庫有值 #利用itertor()方法 book_list1 = Book.objects.all().iterator() #這次就不能用2次for循環(huán),第一次for循環(huán),就已經(jīng)把遍歷完了, book_list1 = Book.objects.all().iterator() #這次就不能用2次for循環(huán),第一次for循環(huán),就已經(jīng)把遍歷完了,用next()方法每次取出一個值, print(next(book_list1)) #linux print(next(book_list1))#項塔蘭 print(next(book_list1))#追風箏的人 Book.objects.filter(id=2).update(price=100.00)#對數(shù)據(jù)庫數(shù)據(jù)進行更新,但并沒有執(zhí)行,只有在用到的時候在執(zhí)行 for obj in book_list: # 在for循環(huán)時開始執(zhí)行sql語句查詢 print(obj.title,obj.price) #如果for循環(huán)2次,打印2次結(jié)果,也是執(zhí)行一次sql語句,因為存在sql的緩存機制,把第一次查詢的結(jié)果放到緩存里, #下次從緩存里調(diào) """ Linux 30.00 ---沒有更新數(shù)據(jù)之前 項塔蘭 45.00 追風箏的人 39.90 富爸爸 23.00 """ """ Linux 100.00 ----更新數(shù)據(jù)之后 項塔蘭 45.00 追風箏的人 39.90 富爸爸 23.00 """
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python用字典統(tǒng)計單詞或漢字詞個數(shù)示例
這篇文章主要介紹了python用字典統(tǒng)計單詞或漢字詞個數(shù)示例,需要的朋友可以參考下2014-04-04Pygame游戲開發(fā)之太空射擊實戰(zhàn)敵人精靈篇
相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來自己動手實現(xiàn)它,在編寫學習中回顧過往展望未來,下面開始講解敵人精靈的使用2022-08-08在linux系統(tǒng)下安裝python librtmp包的實現(xiàn)方法
今天小編就為大家分享一篇在linux系統(tǒng)下安裝python librtmp包的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07基于Django框架的rest_framework的身份驗證和權(quán)限解析
Django 是一個基于 Python 的 Web 框架,可讓您快速創(chuàng)建高效的 Web 應(yīng)用程序,這篇文章主要介紹了基于Django框架的rest_framework的身份驗證和權(quán)限解析,需要的朋友可以參考下2023-05-05