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常见文件操作的函数示例代码
Nov 15 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
python安装numpy和pandas的方法步骤
May 27 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
Jul 09 Python
PyQt5的相对布局管理的实现
Aug 07 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
Python类class参数self原理解析
Nov 19 Python
Python读写Excel表格的方法
Mar 02 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 UBB 解析实现代码
2011/11/27 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
2016/10/21 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
2017/04/19 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
Python Web框架Tornado运行和部署
2020/10/19 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
Django 路由控制的实现代码
2018/11/08 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
查看keras的默认backend实现方式
2020/06/19 Python
Python加速程序运行的方法
2020/07/29 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
个人自我鉴定怎么写
2013/10/28 职场文书
大学教师年终总结的自我评价
2013/10/29 职场文书
三年级语文教学反思
2014/02/01 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
邀请函格式范文
2015/02/02 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang