orm聚合查询、分组查询、F查询和Q查询

1.聚合查询(Avg,Count,Max,Min,Sum)

Avg为求平均数,Count为求个数,Max为求最大值,Min为求最小值,Sum为求和

以Avg举例

from django.db.models import Avg,Count,Max,Min,Sum
ret=Book.objects.all().aggregate(Avg(‘price‘)) //其中price必须是以有的字段

2.分组查询

? 要点:

? values在annotate前,表示group by,在annotate后,表示取值

? filter在annotate前,表示过滤(where),在annotate后,表示having(对分组之后的结果再进行过滤)

? 其中在前的value可以省略默认用id进行分组

Author.object.all().annotate(a=Sum(‘book__price‘)).filter(name=‘小王‘).first()

3.F查询

? F为了字段=后面的值,不能放字段,所以用F函数包裹一下就可以了

Book.objects.update(price=F(‘price‘)+1)

4.Q查询

? Q为了构造 与& ,或| , 非~的关系

? 注意Q查询的非的符号是~

books = Book.objects.filter(~Q(name=‘红楼梦‘)).all().values(‘name‘)

原文地址:https://www.cnblogs.com/jianhaozhou/p/9960180.html

时间: 2024-08-01 19:56:45

orm聚合查询、分组查询、F查询和Q查询的相关文章

ORM多表分组、F与Q查询

编辑本博客 一.分组查询 先连接表,再分组查询 需求:查询每一个出版社出版的名称以及书籍个数 SQL连接表: SELECT * FROM app_book INNER JOIN app_publish on app_book.publish_id = app_publish.nid ORM连接表: Book.objects.values("publish").values() SQL链表后分组: SELECT count(title),app_publish.name FROM app

Django学习【第7篇】:Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)

django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系(one-to-many). 创建一对一的关系:OneToOne("要绑定关系的表名") 创建一对多的关系:ForeignKey("要绑定关系的表名") 创建多对多的关系:ManyToMany(&qu

Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)

一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系(one-to-many). 创建一对一的关系:OneToOne("要绑定关系的表名") 创建一对多的关系:ForeignKey("要绑定关系的表名") 创建多对多的关系:ManyToMany("要绑定关系的表名"

运维 2.0 时代:数据聚合和分组

运维 2.0 时代:数据聚合和分组 from http://www.cnblogs.com/oneapm/p/4962111.html 运维 2.0 是指,从技术运维升级为服务运维,向公司提供可依赖的专业服务.运维 2.0 强调服务交付能力,而不是技术能力,需求可依赖.懂业务.服务化的专业运维. 为了了解运维 2.0 时代的监控方式,我们不妨从以前的监控手段说起.首先来了解一下 Zabbix ,通过 Zabbix 能够监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员

python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_demo.settings") import django django.setup() # 启动Django项目 from app01 import models #返回QuerySet对象的方法: r

Django框架08 /聚合查询、分组、F查询和Q查询、执行原生sql、设置 sql_mode

目录 Django框架08 /聚合查询.分组.F查询和Q查询.执行原生sql.设置 sql_mode 1.聚合查询 2.分组 3.F查询和Q查询 4.执行原生sql(了解) 5.展示sql的 6.设置 sql_mode Django框架08 /聚合查询.分组.F查询和Q查询.执行原生sql.设置 sql_mode 1.聚合查询 aggregate(*args, **kwargs) aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典.键的名称是聚合值

聚合与分组查询,F与Q查询

from django.db.models import Q 查询书籍名称是python入门或者价是555.55的书 book_queryset = models.Book.objects.filter(Q('title'='python入门')|Q('price'=555.55)) print(book_queryset) Q查询进阶用法 用Q产生对象 然后再使用 q = Q() q.connector('or') 添加查询条件 title__icontains为查询条件,同其他查询方式的写法

68 聚合和分组, F和Q查询, cookie, session

主要内容: 1  聚合和分组: a : 先导入聚合函数: from django.db.models import  Max, Min, Avg, Count, Sum b : 可以为聚合函数设置名字:  max = Max('price') c : 聚合用到了aggregate,  是queryset的一个终止语句,  获取的结果是一个字典的形式. 1 from django.db.models import Avg, Sum, Max, Min, Count 2 ret = models.B

python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)

阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_length=32) price = models.DecimalField(max_digits=10, decimal_places=2) # 库存数 inventory = models.IntegerField() # 卖出数 sale = models.IntegerField() def __s