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标准库与第三方库详解
Jul 22 Python
跟老齐学Python之通过Python连接数据库
Oct 28 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
Python中用altzone()方法处理时区的教程
May 22 Python
Python中函数的参数定义和可变参数用法实例分析
Jun 04 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
Django处理多用户类型的方法介绍
May 18 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
python3中rank函数的用法
Nov 27 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
Pandas之缺失数据的实现
Jan 06 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 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
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
PHP实现货币换算的方法
2014/11/29 PHP
复制js对象方法(详解)
2013/07/08 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python字典基本操作实例分析
2015/07/11 Python
python 中字典嵌套列表的方法
2018/07/03 Python
Python实现DDos攻击实例详解
2019/02/02 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
python 实现波浪滤镜特效
2020/12/02 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
css3 transform属性详解
2014/09/30 HTML / CSS
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
综合内勤岗位职责
2014/04/14 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python
golang中的struct操作
2021/11/11 Golang
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle