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 相关文章推荐
20招让你的Python飞起来!
Sep 27 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python进阶_关于命名空间与作用域(详解)
May 29 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
Keras中的多分类损失函数用法categorical_crossentropy
Jun 11 Python
用python实现学生管理系统
Jul 24 Python
python 实现批量图片识别并翻译
Nov 02 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 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
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
JavaScript中的类继承
2010/11/25 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
python实现马丁策略的实例详解
2021/01/15 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
装修协议书范本
2014/04/21 职场文书
银行求职自荐书
2014/06/25 职场文书
单位消防安全责任书
2014/07/23 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
老干部座谈会主持词
2015/07/03 职场文书
python入门之算法学习
2021/04/22 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
python manim实现排序算法动画示例
2022/08/14 Python