11.Django數據庫操作(查)


django.db.models.query.QuerySet
1.可迭代
2.可切片

官方文檔:https://docs.djangoproject.com/en/1.9/ref/models/querysets/

 

相關API
1.get(**kwargs)

  解釋:返回與篩選條件相匹配的Model對象,返回結果有且只有一個。

  說明:如果符合條件的對象多於一個拋出MultipleObjectsReturned異常,如果沒有找到拋出DoesNotExist異常

  語法:ModelName.objects.get(itemName=itemNameValue)

  例子:Author.objects.get(id=1)

2.all()

  解釋:查詢所有結果(懶加載),當查詢的時候並不真實發送sql語句,用的時候才會真的去查詢

  語法:ModelName.objects.all()

  例子:Author.objects.all(id=1)

3.filter(**kwargs)

  解釋:包含了與所給的篩選條件相匹配的QuerySet

  語法:ModelName.objects.filter(itemName=itemNameValue)

  例子:Author.objects.filter(id=1)

4.exclude(**kwargs):

  解釋:包含了與所給的篩選件不匹配的QuerySet,於filter正好相反

  語法:ModelName.objects.exclude(itemName=itemNameValue)

  例子:Author.objects.filter(id=1)

5.order_by(*fields)

  解釋:對查詢結果進行排序

  語法:ModelName.objects.all().order_by("itemName")

  例子:Author.objects.all().order_by("id")

6.reverse()

  解釋:對查詢結果反向排序

  語法:ModelName.objects.all().order_by("itemName").reverse()

  例子:Author.objects.all().order_by("id")

7.distinct()

  解釋:對查詢結果去重

  語法:ModelName.objects.all().distinct()

  例子:Author.objects.all().distinct()

8.values(*fields)

  解釋:返回一個ValuesQuerySet(一個特殊的QuerySet)

  說明:運行后得到的不是一系列model的實例對象,而是一個可迭代的字段序列

  語法:ModelName.objects.filter(name=value).values("name","name")

  例子:Author.objects.filter(id=1).values("name","id")

9.values_list(*fields)

  解釋:與values相似只是返回的是一個元組

  語法:ModelName.objects.filter(name=value).values_list("name","name")

  例子:Author.objects.filter(id=1).values_list("name","id")

10.count()

  解釋:返回數據庫中匹配查詢的對象數量

  語法:ModelName.objects.filter(itemName=itemNameValue).count()

  例子:Author.objects.filter(name="xiaol").count()

11.first()/last()

  解釋:第一條記錄/最后一條記錄

  語法:ModelName.objects.filter(itemName=itemNameValue).first()

  例子:Author.objects.filter(name="xiaol").last()

 

關聯查詢:

  方法:使用兩個下划線(__)可以進行關聯查詢

  例子:查詢AutherDetail的信息

  語法:AuthorDetail.objects.filter(id="2").values("sex","email", "author__name")

 

聚合查詢:需要引入from django.db.models import *

  方法:使用aggreagte關鍵字

  用法:xxx.filter(查詢條件).aggregate(別名=聚合函數('聚合字段'))

  語法:Author.objects.filter(name="xiaol").aggregate(myCount=Count('id'))

 

分組查詢:需要引入from django.db.models import *

  方法:使用aggreagte關鍵字

  用法:xxx.filter(分組字段).annotate(分組后操作)

  語法:Author.objects.filter(name="xiaol").annotate(myCount=Count('id'))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM