django中ORM的查询语句是什么
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,django中ORM的查询语句是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在日常开发中,数据库的增删改查(CDUR)中,查询需求
千家信息网最后更新 2025年02月03日django中ORM的查询语句是什么
django中ORM的查询语句是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
在日常开发中,数据库的增删改查(CDUR)中,查询需求偏多,所以查询的语法比增删改操作多得多,尤其是跨表关联查询,可以让代码精简很多。
直接上代码吧,我是直接在上次写的的视图函数中改写的。
def orm_test(request):
"""
增加操作
"""
# 新增一个名字为1901的一个班级,create是新增方法,里面可以接受多个字段参数
# Class.objects.create(name="1901")
# 同时新增一个学生和班级操作
# 新增一个班级名称为1903的班级,返回一个班级实例
# cls_instance = Class.objects.get(name="1903")
# stu_info左边的key要和Student模型字段对应上,因为cls是外键,所以要对应一个班级的实例
# stu_info = {
# "name":"XIAOmei",
# "age": "24",
# "score":"88",
# "email": "1333@qq.com",
# "introduce": "假如你是xiaomei",
# "cls": cls_instance
# }
# Student.objects.create(**stu_info)
"""
修改操作
"""
# 将名字为1901的班级名称改为1901_xiu,filter为过滤,支持多个参数,update是更新方法,支持多个参数
# Class.objects.filter(name="1901").update(name="1901_xiu")
"""
删除操作
"""
# 将名字为1901_xiu的班级删除掉,delete是删除方法
# Class.objects.filter(name="1901_xiu").delete()
"""
查询操作
"""
# 查询单条,get返回实例,如果查询结果没有回报错,
# filter查询返回的结果是多个实例的列表,
# instance = Student.objects.get(pk=1)
#instance = Student.objects.filter(pk=1).first()
# 查询多条,返回queryset类型(多个查询结果实例的列表) 可以被迭代
# queryset = Student.objects.all() #
# for stu in queryset:
#学生的姓名 学生的年龄 学生的分数
# print(stu.name,stu.age,stu.score)
#对查询集结果进行切片,取第0个到第4个,和列表的切片一样
# queryset = Student.objects.filter().all()[:5] # limit 语句
# print(queryset.query) # 返回执行的sql语句
# 精准查找 两条语句作用一样,查询姓名位小美的学生,结果返回查询集
# queryset = Student.objects.filter(name='小美')
# queryset = Student.objects.filter(name__exact='小美')
# 忽略大小写
# queryset = Student.objects.filter(name__iexact='xiaomei')
# 模糊查询
# queryset = Student.objects.filter(name__contains='xiao') # 不忽略大小写
# queryset = Student.objects.filter(name__icontains='xiao') # 忽略大小写
# 正则匹配法
# queryset = Student.objects.filter(name__regex='^x')
# queryset = Student.objects.filter(name__iregex='^x')
# 大于 小于
# queryset = Student.objects.filter(age__gt=17, age__lt=19)
# in 一个集合中的所有
# queryset = Student.objects.filter(age__in=(18,17,16))
# queryset = Student.objects.all().order_by('age') 升序
# queryset = Student.objects.all().order_by('-age') #升序
# queryset = Student.objects.all().order_by('-age','id') #升序
# for stu in queryset:
# print stu.age,stu.id
# 指定字段查询
# 第一种
# queryset = Student.objects.values('name','age').all()
# 第二种
# queryset = Student.objects.values_list('name','age','score').all()
# 连表查询
# 第一种
# queryset = Student.objects.all()
# for stu in queryset:
# print stu.name,stu.cls.id,stu.cls.name
# 第二种 : 牛逼的双下划线(跨表),可以用多个双下划线跨多张表
# 语句功能是查询学生表中所有学生的姓名和学生所在班级的名称
# cls__name 是cls双下划线name,cls 是Student中的cls字段,name是班级表中的name字段
# queryset = Student.objects.values('name','cls__name').all()
# 查询一个班级所有学生,执行两次sql语句
# cls1 = Class.objects.get(name='1701')
# queryset = Student.objects.filter(cls=cls1)
# 查询一个班级所有学生,执行一次sql语句
# queryset = models.Student.objects.filter(cls__name='1903').all().values('name','cls__name')
# 查询一个班级所有学生,起始表从班级表开始查询,反向查询
# stu_cls 是学生表中外键的别名
# queryset = Class.objects.get(name='1903').stu_cls.all()
# 按照分数查询 大于90分
# queryset = Student.objects.filter(score__gt=90).all()
return HttpResponse('数据库操作成功')
看完上述内容,你们掌握django中ORM的查询语句是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
查询
班级
学生
语句
多个
字段
实例
方法
结果
下划线
升序
参数
名字
名称
大小
姓名
代码
内容
分数
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
初级网络安全测评师
中国新一代一体化服务器
浙江mes软件开发商
网络安全和系统风险
网络技术视频教程第七章1
网络安全日期表
手机代理服务器的开放端口
电商公司网络安全威胁处置
网络安全包括四个方面
网络安全管理信息简报
国际版pemc哪个服务器好玩
科技项目软件开发模板
传输网络技术电子版
河北人工智能软件开发需要多少钱
计算机网络技术和应用专业好吗
网络安全业务属于啥行当
在线厚度检测系统软件开发
南昌互动博物馆软件开发
密码学与网络安全范畴
access数据库连接池
软件开发生理期 柚
网络安全知识宣传海报分析
软件开发的模型的作用
linux读取数据库文件
杨浦区项目数据库服务商内容
信号满格就是连接不上服务器
饿了么数据库设计图
网络安全认识600字作文
大华服务器数据返回错误
NCBI数据库引用格式网址