Python模型中的一些常用查询操作
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本篇内容介绍了"Python模型中的一些常用查询操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目
千家信息网最后更新 2025年01月22日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安全错误
数据库的锁怎样保障安全
数据库怎么看有多少张数据库
梦幻西游手游江山如画服务器
foxpro虚拟数据库
国子软件开发面试
tomcat8连接数据库
自由幻想和服务器连接丢失
软件开发生产论文
哪些服务器有龙之研究模组
荒野乱斗哪个服务器人多
肖战重庆网络安全观察
网站建设需要自己的服务器吗
软件开发转技术服务
数据库关系运算有哪几种
应该使用数据库锁还是分布式锁
号码提取数据库
新罗区曝巴网络技术工作室
计算机应用也网络技术区别
u盘插入服务器不能启动
搜索科技与网络安全
南京丰泰互联网科技怎么样
北京梦想站网络技术有限公司
网络安全国防新闻
盐田区新一代网络技术开发动态
湖南放心软件开发服务品质保障
wow服务器名字
湛江市网络安全平台
修改网址要更换服务器吗
数据库判断值在哪个范围
收银机共享数据库怎么连接
金蝶专业版数据库怎么写