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网络编程学习笔记(一)
Jun 09 Python
使用 Python 获取 Linux 系统信息的代码
Jul 13 Python
Python中字符串的修改及传参详解
Nov 30 Python
带你了解python装饰器
Jun 15 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
Django forms组件的使用教程
Oct 08 Python
python实现图书借阅系统
Feb 20 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
python实现图片素描效果
Sep 26 Python
python实现简单倒计时功能
Apr 21 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
Elasticsearch 数据类型及管理
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中动态HTML的输出技术
2006/10/09 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
Angular工具方法学习
2016/12/26 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
python中的列表推导浅析
2014/04/26 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python如何读取文件中图片格式
2020/01/13 Python
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
帕克纽约:PARKER NY
2018/12/09 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
美德少年事迹材料
2014/01/23 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
物业品质提升方案
2014/06/08 职场文书
毕业生对母校寄语
2015/02/26 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
Python 绘制多因子柱状图
2022/05/11 Python