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备份Mysql脚本
Aug 11 Python
Python获取DLL和EXE文件版本号的方法
Mar 10 Python
python图像常规操作
Nov 11 Python
python使用Flask操作mysql实现登录功能
May 14 Python
python opencv3实现人脸识别(windows)
May 25 Python
Python并发之多进程的方法实例代码
Aug 15 Python
Python魔法方法 容器部方法详解
Jan 02 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
Mar 10 Python
Python3自定义json逐层解析器代码
May 11 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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
第十一节 重载 [11]
2006/10/09 PHP
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
javascript import css实例代码
2008/07/18 Javascript
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
Json解析的方法小结
2016/06/22 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
vue.js中过滤器的使用教程
2017/06/08 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
小程序实现密码输入框
2020/11/16 Javascript
pygame加载中文名mp3文件出现error
2017/03/31 Python
python使用opencv读取图片的实例
2017/08/17 Python
python 魔法函数实例及解析
2019/09/25 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
教师三严三实对照检查材料
2014/09/25 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
使用Pytorch训练two-head网络的操作
2021/05/28 Python