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关闭windows进程的方法
Apr 18 Python
Python常用库推荐
Dec 04 Python
Python解惑之True和False详解
Apr 24 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
对Python中plt的画图函数详解
Nov 07 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
Python Django中间件使用原理及流程分析
Jun 13 Python
python实现最短路径的实例方法
Jul 19 Python
Python  lambda匿名函数和三元运算符
Apr 19 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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
javascript通过class来获取元素实现代码
2013/02/20 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
初步探究Python程序的执行原理
2015/04/11 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python 的内置字符串方法小结
2016/03/15 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
Python logging模块handlers用法详解
2020/08/14 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
成人大专生实习期的自我评价
2013/10/02 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
分居协议书范本
2014/11/03 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
python中%格式表达式实例用法
2021/06/18 Python