Python模型中的一些常用查询操作
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容介绍了"Python模型中的一些常用查询操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目
千家信息网最后更新 2025年11月07日Python模型中的一些常用查询操作
本篇内容介绍了"Python模型中的一些常用查询操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目录
模型中的一些查询操作:
1.聚合查询:aggregate()是QuerySet 的一个终止子句
2.Q查询: 如果你需要执行更复杂的查询(例如OR语句)
3.F查询: (查询的是一整列数据!)
4.分组查询
4.1一对多关系
4.2多对多关系
模型中的一些查询操作:
1.聚合查询:aggregate()是QuerySet 的一个终止子句
它返回一个包含一些键值对的字典
from movie.models import Userfrom django.db.models import Count, Avg, Max, Min, Sumdef test_info(request): #聚合查询 #求User中的平均年龄 默认返回的数据格式是一个字典,其中键名为age__avg,值为指定字段的平均值。 rs = User.objects.all().aggregate(Avg("age")) #指定一个名字 可以通过如下指定字典的键名。 rs = User.objects.all().aggregate(age=Avg("age")) #平均,最大,最小,求和 rs = User.objects.all().aggregate(Avg("age"),Max("age"),Min("age"),Sum("age"))默认情况下(求User中的平均年龄):

指定键名(求User中的平均年龄):

2.Q查询: 如果你需要执行更复杂的查询(例如OR语句)
你可以使用Q对象。Q对象可以使用&(and)、|(or)操作符;使用~(not)操作符在Q对象前表示取反
# 查询出User表中name为小明或者小红的rs = User.objects.filter(Q(name='小明')|Q(name='小红'))# 查询Student表中,name为小明,年龄不等于18的rs = User.objects.filter(Q(name='小明')&~Q(age=18))
3.F查询: (查询的是一整列数据!)
针对两个字段的值的比较
# 学院id小于学生的学号的rs = Student.objects.filter(department_id__gt=F('s_id))# 给User表中的所有人加1岁rs = User.objects.all().update(age=F('age')+1)4.分组查询
为调用的QuerySet中每一个对象都生成一个独立的统计值
4.1一对多关系
import Student,Coursefrom django.db.models import Count# 拿出学生表中需要分组的字段rs = Student.objects.values() # 以字典形式展示所有查询到的数据的全部信息"""输出示例:"""rs = Student.objects.values('department') # 以字典形式展示所有查询到的数据的department字段"""输出示例: """rs = Student.objects.values('s_name','department') # 以字典形式展示所有查询到的数据的s_name和department字段"""输出示例: """# 对这个department字段进行分组rs = Student.objects.values('department').annotate(count=Count('department'))"""输出示例: """# 对分组后的内容按需要的字段输出rs = Student.objects.values('department').annotate(count=Count('department')).values('department', 'count')"""输出示例: """
4.2多对多关系
# 多对多关系# 以课程作为分组条件查每个课程的学生数量 拿到所有的课程的数据rs = Course.objects.all()# 关系表中,同一个课程,学生学号出现的次数,就是报名了此课程的学生的个数rs = Course.objects.all().annotate(count=Count('students'))rs = Course.objects.all().annotate(count=Count('students')).values('c_name', 'count')# 以学生作为分组条件来查每个学生报名了的课程数量 拿到所有的学生的数据rs = Student.objects.all()# 关系表中,同一个学生,课程出现的次数,就是这个学生报名的课程的数量rs = Student.objects.all().annotate(count=Count('course'))rs = Student.objects.all().annotate(count=Count('course')).value('s_name', 'count')"Python模型中的一些常用查询操作"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
查询
学生
数据
课程
字段
分组
输出
字典
示例
模型
对象
年龄
小明
内容
形式
数量
常用
常用查询
复杂
子句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
江苏学会网网络安全
加拿大专利登记数据库技巧
幻影宝可梦服务器手机版怎么下载
ssh 链接数据库 软件
中国工商银行西安软件开发
服务器带宽和并发量
数据库分区技术的作用
上海郝郝互联网科技
医学数据库等级
简单苹果软件开发工具
软件开发商标注册哪个类别
网络安全 论述
机关网络安全演练流程
服务器风扇是向里吹还是向外
天津网络安全投资
数据库健康检查
卡片游戏数码兽数据库
cdn高防服务器
游戏软件开发如何申报
永康 软件开发
上海子母钟服务器
关系数据库规则
数据库怎么设置主键
网络安全常用的命令题目
徐州南京服务器规格
cad和网络安全哪个用处更大
软件开发是做app开发吗
幼儿园净化网络安全教案
烟台众聚网络技术
施乐安装服务器驱动