Django从理论到实战(part36)--QuerySet转换SQL
學(xué)習(xí)筆記,僅供參考,有錯(cuò)必糾
參考自:Django打造大型企業(yè)官網(wǎng)–Huang Y;官方文檔
QuerySet轉(zhuǎn)換SQL
生成一個(gè)QuerySet對(duì)象并不會(huì)馬上轉(zhuǎn)換為SQL語(yǔ)句,比如我們獲取Book表下所有的圖書:
books = Book.objects.all() print(connection.queries)打印connection.quries時(shí)將返回一個(gè)空的列表,說明上面的QuerySet并沒有真正的執(zhí)行。
在以下情況下QuerySet會(huì)被轉(zhuǎn)換為SQL語(yǔ)句執(zhí)行:
迭代:在遍歷QuerySet對(duì)象的時(shí)候,會(huì)首先先執(zhí)行這個(gè)SQL語(yǔ)句,然后再把這個(gè)結(jié)果返回進(jìn)行迭代。比如以下代碼就會(huì)轉(zhuǎn)換為SQL語(yǔ)句:
for book in Book.objects.all():print(book)使用步長(zhǎng)做切片操作:QuerySet可以類似于列表一樣做切片操作。做切片操作本身不會(huì)執(zhí)行SQL語(yǔ)句,但是如果如果在做切片操作的時(shí)候提供了步長(zhǎng),那么就會(huì)立馬執(zhí)行SQL語(yǔ)句。需要注意的是,做切片后不能再執(zhí)行filter方法,否則會(huì)報(bào)錯(cuò)。
調(diào)用len函數(shù):調(diào)用len函數(shù)用來獲取QuerySet中總共有多少條數(shù)據(jù)也會(huì)執(zhí)行SQL語(yǔ)句。
調(diào)用list函數(shù):調(diào)用list函數(shù)用來將一個(gè)QuerySet對(duì)象轉(zhuǎn)換為list對(duì)象也會(huì)立馬執(zhí)行SQL語(yǔ)句。
判斷:如果對(duì)某個(gè)QuerySet進(jìn)行判斷,也會(huì)立馬執(zhí)行SQL語(yǔ)句。
總結(jié)
以上是生活随笔為你收集整理的Django从理论到实战(part36)--QuerySet转换SQL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 菜鸟裹裹浅色模式怎么设置
- 下一篇: 双扣游戏怎么赢 双扣必胜技巧介绍