django中ORM的查詢語句是什么,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)公司為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設計服務,主要包括成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設、重慶APP開發(fā)公司、小程序設計、宣傳片制作、LOGO設計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗豐富的經(jīng)驗,可以確保每一個作品的質(zhì)量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
在日常開發(fā)中,數(shù)據(jù)庫的增刪改查(CDUR)中,查詢需求偏多,所以查詢的語法比增刪改操作多得多,尤其是跨表關聯(lián)查詢,可以讓代碼精簡很多。
直接上代碼吧,我是直接在上次寫的的視圖函數(shù)中改寫的。
def orm_test(request):
"""
增加操作
"""
# 新增一個名字為1901的一個班級,create是新增方法,里面可以接受多個字段參數(shù)
# Class.objects.create(name="1901")
# 同時新增一個學生和班級操作
# 新增一個班級名稱為1903的班級,返回一個班級實例
# cls_instance = Class.objects.get(name="1903")
# stu_info左邊的key要和Student模型字段對應上,因為cls是外鍵,所以要對應一個班級的實例
# stu_info = {
# "name":"XIAOmei",
# "age": "24",
# "score":"88",
# "email": "1333@qq.com",
# "introduce": "假如你是xiaomei",
# "cls": cls_instance
# }
# Student.objects.create(**stu_info)
"""
修改操作
"""
# 將名字為1901的班級名稱改為1901_xiu,filter為過濾,支持多個參數(shù),update是更新方法,支持多個參數(shù)
# Class.objects.filter(name="1901").update(name="1901_xiu")
"""
刪除操作
"""
# 將名字為1901_xiu的班級刪除掉,delete是刪除方法
# Class.objects.filter(name="1901_xiu").delete()
"""
查詢操作
"""
# 查詢單條,get返回實例,如果查詢結果沒有回報錯,
# filter查詢返回的結果是多個實例的列表,
# instance = Student.objects.get(pk=1)
#instance = Student.objects.filter(pk=1).first()
# 查詢多條,返回queryset類型(多個查詢結果實例的列表) 可以被迭代
# queryset = Student.objects.all() #
# for stu in queryset:
#學生的姓名 學生的年齡 學生的分數(shù)
# print(stu.name,stu.age,stu.score)
#對查詢集結果進行切片,取第0個到第4個,和列表的切片一樣
# queryset = Student.objects.filter().all()[:5] # limit 語句
# print(queryset.query) # 返回執(zhí)行的sql語句
# 精準查找 兩條語句作用一樣,查詢姓名位小美的學生,結果返回查詢集
# queryset = Student.objects.filter(name='小美')
# queryset = Student.objects.filter(name__exact='小美')
# 忽略大小寫
# queryset = Student.objects.filter(name__iexact='xiaomei')
# 模糊查詢
# queryset = Student.objects.filter(name__contains='xiao') # 不忽略大小寫
# queryset = Student.objects.filter(name__icontains='xiao') # 忽略大小寫
# 正則匹配法
# queryset = Student.objects.filter(name__regex='^x')
# queryset = Student.objects.filter(name__iregex='^x')
# 大于 小于
# queryset = Student.objects.filter(age__gt=17, age__lt=19)
# in 一個集合中的所有
# queryset = Student.objects.filter(age__in=(18,17,16))
# queryset = Student.objects.all().order_by('age') 升序
# queryset = Student.objects.all().order_by('-age') #升序
# queryset = Student.objects.all().order_by('-age','id') #升序
# for stu in queryset:
# print stu.age,stu.id
# 指定字段查詢
# 第一種
# queryset = Student.objects.values('name','age').all()
# 第二種
# queryset = Student.objects.values_list('name','age','score').all()
# 連表查詢
# 第一種
# queryset = Student.objects.all()
# for stu in queryset:
# print stu.name,stu.cls.id,stu.cls.name
# 第二種 : 牛逼的雙下劃線(跨表),可以用多個雙下劃線跨多張表
# 語句功能是查詢學生表中所有學生的姓名和學生所在班級的名稱
# cls__name 是cls雙下劃線name,cls 是Student中的cls字段,name是班級表中的name字段
# queryset = Student.objects.values('name','cls__name').all()
# 查詢一個班級所有學生,執(zhí)行兩次sql語句
# cls1 = Class.objects.get(name='1701')
# queryset = Student.objects.filter(cls=cls1)
# 查詢一個班級所有學生,執(zhí)行一次sql語句
# queryset = models.Student.objects.filter(cls__name='1903').all().values('name','cls__name')
# 查詢一個班級所有學生,起始表從班級表開始查詢,反向查詢
# stu_cls 是學生表中外鍵的別名
# queryset = Class.objects.get(name='1903').stu_cls.all()
# 按照分數(shù)查詢 大于90分
# queryset = Student.objects.filter(score__gt=90).all()
return HttpResponse('數(shù)據(jù)庫操作成功')
看完上述內(nèi)容,你們掌握django中ORM的查詢語句是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
分享題目:django中ORM的查詢語句是什么
文章起源:http://aaarwkj.com/article44/jejshe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、外貿(mào)建站、動態(tài)網(wǎng)站、品牌網(wǎng)站制作、品牌網(wǎng)站設計、網(wǎng)站設計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)