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之使用Python查询更新数据库
Nov 25 Python
使用Python编写一个模仿CPU工作的程序
Apr 16 Python
在Python的Flask框架中实现全文搜索功能
Apr 20 Python
python脚本监控docker容器
Apr 27 Python
python机器人行走步数问题的解决
Jan 29 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
May 29 Python
对Python中画图时候的线类型详解
Jul 07 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
python飞机大战游戏实例讲解
Dec 04 Python
PyCharm常用配置和常用插件(小结)
Feb 06 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重新实现PHP脚本引擎内置函数
2007/03/06 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
JS继承 笔记
2011/07/13 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
express express-session的使用小结
2018/12/12 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
python实现的Iou与Giou代码
2020/01/18 Python
python GUI计算器的实现
2020/10/09 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
介绍一下mysql的日期和时间函数
2013/03/28 面试题
复核员上岗演讲稿
2014/01/05 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
python scipy 稀疏矩阵的使用说明
2021/05/26 Python