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 相关文章推荐
pymongo为mongodb数据库添加索引的方法
May 11 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
matplotlib作图添加表格实例代码
Jan 23 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
Django给admin添加Action的步骤详解
May 01 Python
使用Python函数进行模块化的实现
Nov 15 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
调整Jupyter notebook的启动目录操作
Apr 10 Python
判断Python中的Nonetype类型
May 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
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
php数据访问之查询关键字
2016/05/09 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
python简单实现计算过期时间的方法
2015/06/09 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
个人找工作的自我评价
2013/10/17 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
大国崛起观后感
2015/06/02 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书