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 多维切片之冒号和三个点的用法介绍
Apr 19 Python
Python Web编程之WSGI协议简介
Jul 18 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
Python实现Singleton模式的方式详解
Aug 08 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
使用python动态生成波形曲线的实现
Dec 04 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
matplotlib 画双轴子图无法显示x轴的解决方法
Jul 27 Python
Python如何输出百分比
Jul 31 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
Django利用AJAX技术实现博文实时搜索
May 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使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
如何测量vue应用运行时的性能
2019/06/21 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
Java分治归并排序算法实例详解
2017/12/12 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
酒店保洁主管岗位职责
2013/11/28 职场文书
资产经营总监岗位职责
2013/12/04 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
晚归检讨书
2014/02/19 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
考试后的感想
2015/08/07 职场文书