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上气泡提醒效果的方法
Jun 03 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
python实现录音小程序
Oct 26 Python
python调用matlab的m自定义函数方法
Feb 18 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
python3.x中安装web.py步骤方法
Jun 23 Python
Python scrapy爬取起点中文网小说榜单
Jun 13 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中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
puppeteer库入门初探
2019/01/09 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
Django框架中方法的访问和查找
2015/07/15 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
Python魔术方法专题
2020/06/19 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
大学生会计职业生涯规划范文
2014/02/28 职场文书
初中生评语大全
2014/04/24 职场文书
大学学风建设方案
2014/05/04 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript