django 中的聚合函数,分组函数,F 查询,Q查询


Posted in Python onJuly 25, 2019

先以mysql的语句,聚合用在分组里,

对mysql中groupby 是分组

每什么的时候就要分组,如 每个小组,就按小组分,

group by 字段 having 聚合函数

#举例 :求班里的平均成绩, select Avg(score) from stu

在django中

聚合 是aggreate(*args,**kwargs),通过QuerySet 进行计算。做求值运算的时候使用

分组 是annotate(*args,**kwargs),括号里是条件,遇到 每什么的时候就要分组,

先从models 导入要用到的函数

from django.db.models import Min,Avg,Max,Sum

def aggregate(request):

  #求所有书籍的平均价格
  ret11 = Book.objects.all().aggregate(Avg("price"))
  # print(ret11)#{'price__avg': 51.975}

  #求所有书籍的最高价
  ret12 = Book.objects.all().aggregate(MaxPrice=Max('price'))
  # print(ret12)#{'MaxPrice': Decimal('100.00')}

  #egon 出版过书籍的最高价格
  p = Book.objects.filter(authors__name='egon').aggregate(Max('price'))

  print(p)#{'price__max': Decimal('100.00')}



  #分组 annotate()
  #每一个作者出版过的书的最高价 ,
  #解析,按照作者的名字分组,就要用到values,显示的是字段的名字,

  b1 = Book.objects.values('authors__name').annotate(Max('price'))

  print(b1)
  #<QuerySet [{'authors__name': 'egon', 'price__max': Decimal('100.00')},
      # {'authors__name': 'alex', 'price__max': Decimal('100.00')},
      # {'authors__name': 'yuan', 'price__max': Decimal('100.00')},
      # {'authors__name': 'oldboy', 'price__max': Decimal('100.00')}]># 四个作者都关联了同一本书,而这本书又是最高价
#每个出版社出版的最低价格的书籍

b2 = Book.objects.values('publish__name').annotate(Min('price'))
print(b2)
#<QuerySet [{'publish__name': '北京出版社', 'price__min': Decimal('100.00')},
# {'publish__name': '河下出版社', 'price__min': Decimal('45.00')},
# {'publish__name': '清华出版社', 'price__min': Decimal('39.90')},
# {'publish__name': '人民出版社', 'price__min': Decimal('23.00')}]>

F Q 查询

F,主要是做查询

Q查询 可以做组合条件的查询 & 是 与 ,|(管道符) 或,~ 非

def FAndQ(request):
 
  #给每本书涨价10元,
  #用sql语句写 update book set price=price+10
 
  #F,主要是做查询
  # Book.objects.all().update(price=F('price')+10)
 
  #查询书籍是富开头,并且价格大于30的书籍 ,逗号 可以做 与 的关系查询
  b4 = Book.objects.filter(title__startswith="富",price__gt=30)
  # print(b4)#<QuerySet [<Book: 富爸爸>]>
 
 
  #Q查询 可以做组合条件的查询 & 是 与 ,|(管道符) 或,~ 非
 
  ##查询书籍是富开头,或价格大于30的书籍
  b5 = Book.objects.filter(Q(title__startswith="富") | Q(price__gt=60))
  # print(b5)
  #<QuerySet [<Book: Linux>, <Book: 项塔兰>, <Book: 追风筝的人>, <Book: 富爸爸>]>
 
  #组合查询,以富开头,价格大于60 ,或者id大于5的书籍
  b6 = Book.objects.filter(Q(title__startswith="富")&Q(price__gt=60)|Q(id__gt=5))
  #print(b6)#<QuerySet [<Book: 富儿子>]>
  #
  #查询条件如果不加Q,就要放到最后面,
  b7 = Book.objects.filter(Q(price__gt=60) | Q(id__gt=5),title__startswith="富")
  # print(b7)
 
  # ~ 取反的意思
  b8 = Book.objects.filter(Q(title__startswith="富") & ~Q(price__gt=60) | Q(id__gt=5))
  print(b8)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
python简易实现任意位数的水仙花实例
Nov 13 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
10个Python面试常问的问题(小结)
Nov 20 Python
Python使用Pandas库常见操作详解
Jan 16 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 #Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 #Python
Python 3.8 新功能全解
Jul 25 #Python
python3.7 的新特性详解
Jul 25 #Python
python issubclass 和 isinstance函数
Jul 25 #Python
django的分页器Paginator 从django中导入类
Jul 25 #Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 #Python
You might like
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
php通过session防url攻击方法
2014/12/10 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
javascript引用对象的方法代码
2007/08/13 Javascript
用javascript做拖动布局的思路
2008/05/31 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
原生js轮播特效
2017/05/18 Javascript
React简单介绍
2017/05/24 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
python中的闭包用法实例详解
2015/05/05 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
Python装饰器用法实例分析
2019/01/14 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
Python之Sklearn使用入门教程
2021/02/19 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
酒店总经理助理岗位职责
2014/02/01 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
出差报告范文
2014/11/06 职场文书
慰问信格式规范
2015/03/23 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
学生会自荐信
2019/05/16 职场文书
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android