Django 之 分组查询与聚合查询与Q查询
import osif __name__ == '__main__': #加载Django项目的配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE","testinclude.settings") #导入Django,并启动Django项目 import django django.setup() from ormtest import models from django.db.models import Avg,Sum,Max,Min,Count,Q #聚合查询 #书价平均值 # ret = models.Book.objects.all().aggregate(Avg("price")) # print(ret) #统计多少本书 # ret = models.Book.objects.all().count() # print(ret) #统计价格最贵的书 # ret = models.Book.objects.all().aggregate(Max("price")) # print(ret) #统计价格最便宜的书 # ret = models.Book.objects.all().aggregate(Min("price")) # print(ret) #分组查询 #查询每一本书的作者数量 ret = models.Book.objects.all().annotate(author_num=Count("author")) for book in ret: print("书名:{},作者数量:{}".format(book.title,book.author_num)) #Q查询 #查询书籍价格大于100,小于200的书 ret = models.Book.objects.filter(price__gt=100,price__lt=200) print(ret) #查询书籍价格大于150或者小于50的书 ret = models.Book.objects.filter(Q(price__gt=100)| Q(price__lt=35)) print(ret)
结果
书名:网络基础原理,作者数量:1书名:python从入门到精通,作者数量:1书名:Linux基础,作者数量:1书名:计算机原理,作者数量:2书名:新概念英语,作者数量:1书名:Django从入门到精通,作者数量:1书名:zabbix从入门到精通,作者数量:0
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。