溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

django中ORM的查詢語句是什么

發(fā)布時(shí)間:2021-10-21 15:09:51 來源:億速云 閱讀:128 作者:柒染 欄目:大數(shù)據(jù)

django中ORM的查詢語句是什么,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

在日常開發(fā)中,數(shù)據(jù)庫的增刪改查(CDUR)中,查詢需求偏多,所以查詢的語法比增刪改操作多得多,尤其是跨表關(guān)聯(lián)查詢,可以讓代碼精簡很多。

直接上代碼吧,我是直接在上次寫的的視圖函數(shù)中改寫的。


def orm_test(request):    """    增加操作    """    # 新增一個(gè)名字為1901的一個(gè)班級,create是新增方法,里面可以接受多個(gè)字段參數(shù)    # Class.objects.create(name="1901")    # 同時(shí)新增一個(gè)學(xué)生和班級操作    # 新增一個(gè)班級名稱為1903的班級,返回一個(gè)班級實(shí)例    # cls_instance = Class.objects.get(name="1903")    # stu_info左邊的key要和Student模型字段對應(yīng)上,因?yàn)閏ls是外鍵,所以要對應(yīng)一個(gè)班級的實(shí)例    # 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為過濾,支持多個(gè)參數(shù),update是更新方法,支持多個(gè)參數(shù)    # Class.objects.filter(name="1901").update(name="1901_xiu")    """    刪除操作    """    # 將名字為1901_xiu的班級刪除掉,delete是刪除方法    # Class.objects.filter(name="1901_xiu").delete()    """    查詢操作    """    # 查詢單條,get返回實(shí)例,如果查詢結(jié)果沒有回報(bào)錯,    # filter查詢返回的結(jié)果是多個(gè)實(shí)例的列表,    # instance = Student.objects.get(pk=1)    #instance = Student.objects.filter(pk=1).first()
   # 查詢多條,返回queryset類型(多個(gè)查詢結(jié)果實(shí)例的列表) 可以被迭代    # queryset = Student.objects.all() #    # for stu in queryset:                #學(xué)生的姓名 學(xué)生的年齡 學(xué)生的分?jǐn)?shù)    #     print(stu.name,stu.age,stu.score)
   #對查詢集結(jié)果進(jìn)行切片,取第0個(gè)到第4個(gè),和列表的切片一樣    # queryset = Student.objects.filter().all()[:5] # limit 語句    # print(queryset.query) # 返回執(zhí)行的sql語句
   # 精準(zhǔn)查找 兩條語句作用一樣,查詢姓名位小美的學(xué)生,結(jié)果返回查詢集    # 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 一個(gè)集合中的所有    # 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
   # 第二種 : 牛逼的雙下劃線(跨表),可以用多個(gè)雙下劃線跨多張表    # 語句功能是查詢學(xué)生表中所有學(xué)生的姓名和學(xué)生所在班級的名稱    # cls__name 是cls雙下劃線name,cls 是Student中的cls字段,name是班級表中的name字段    # queryset = Student.objects.values('name','cls__name').all()
   # 查詢一個(gè)班級所有學(xué)生,執(zhí)行兩次sql語句    # cls1 = Class.objects.get(name='1701')    # queryset = Student.objects.filter(cls=cls1)
   # 查詢一個(gè)班級所有學(xué)生,執(zhí)行一次sql語句    # queryset = models.Student.objects.filter(cls__name='1903').all().values('name','cls__name')
   # 查詢一個(gè)班級所有學(xué)生,起始表從班級表開始查詢,反向查詢    # stu_cls 是學(xué)生表中外鍵的別名    # queryset = Class.objects.get(name='1903').stu_cls.all()
   # 按照分?jǐn)?shù)查詢 大于90分    # queryset = Student.objects.filter(score__gt=90).all()
   return HttpResponse('數(shù)據(jù)庫操作成功')

看完上述內(nèi)容,你們掌握django中ORM的查詢語句是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI