django框架F&Q 聚合与分组操作示例


Posted in Python onDecember 12, 2019

本文实例讲述了django框架F&Q 聚合与分组操作。分享给大家供大家参考,具体如下:

F 使用查询条件的值,专门取对象中某列值的操作,可以对同一个表中的两个列进行比较

from django.db.models import F
ret=models.Book.objects.filter(count__lt=F('sale')).values() #查找 列 count < sale的数据
for i in ret:
  print(i)
models.Book.objects.filter(sale__gt=F('stock')) #将一个表中的sale和stock进行比较
models.Book.objects.update(sale=F('sale')*2) #将列sale的数据*2,数据自动提交到数据库 print(models.Book.objects.all().values())

Q 构建搜索条件

from django.db.models import Q
#找出满足两个条件的值
ret=models.Book.objects.filter(id__gte=3,title='学泡妞').values()
print(ret)
#使用Q 中的 | 是或的关系
ret=models.Book.objects.filter(Q(id__lt=2)| Q(id__gte=3)).values()
print(ret)
#使用 & 与的关系
ret=models.Book.objects.filter(Q(title='学泡妞') & Q(id__gte=3)).values()
print(ret)
# ~Q 是非的关系
ret=models.Book.objects.filter(~Q(Q(title='学泡妞') & Q(id__gte=3))).values()
print(ret)

聚合查询---关键字aggregate

#统计所有书的平均价格:聚合
  from django.db.models import Avg,Count,Max,Min
  ret=Book.objects.all().aggregate(c=Avg("price"))
  print(ret) #{'c': 114.66666666666667}

分组查询----关键字annotate

#查询每个出版社出版的书籍个数
  ret=Publish.objects.all().annotate(c=Count("book")).values("name","c")
  print(ret) #<QuerySet [{'name': '苹果出版社', 'c': 1}, {'name': '桔子出版社', 'c': 2}]>
  #查询每一个作者出版的书籍的平均价格
  ret=Author.objects.all().annotate(price_avg=Avg("book__price")).values("name","price_avg")
  print(ret)#<QuerySet [{'name': 'alex', 'price_avg': 116.5}, {'name': 'egon', 'price_avg': 114.66666666666667}, {'name': 'yuan', 'price_avg': 111.0}]>
  #查询每一本书籍名称以及作者个数
  ret=Book.objects.all().annotate(c=Count("author")).values("title","c")
  print(ret) #<QuerySet [{'title': '历险记', 'c': 2}, {'title': 'go', 'c': 2}, {'title': 'java', 'c': 2}]>
  #查询价格大于100的每一本书籍名称以及作者个数
  ret = Book.objects.filter(price__gt=100).annotate(c=Count("author")).values("title", "c")
  print(ret)

区别:查询所有书的平均价格用聚合,查询每本书的平均价格用分组

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
用Python输出一个杨辉三角的例子
Jun 13 Python
跟老齐学Python之让人欢喜让人忧的迭代
Oct 02 Python
Python3读取文件常用方法实例分析
May 22 Python
Python语言描述最大连续子序列和
Dec 05 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
python中HTMLParser模块知识点总结
Jan 25 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 #Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 #Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 #Python
python 使用opencv 把视频分割成图片示例
Dec 12 #Python
Python2与Python3的区别点整理
Dec 12 #Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 #Python
opencv3/C++实现视频读取、视频写入
Dec 11 #Python
You might like
php下保存远程图片到本地的办法
2010/08/08 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
人事部专员岗位职责
2014/03/04 职场文书
法律进企业活动方案
2014/03/04 职场文书
幼教求职信
2014/03/12 职场文书
食品安全责任书
2014/04/15 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
MYSQL如何查看进程和kill进程
2022/03/13 MySQL