教程源码:z991/django_turital

在日常开发中,数据库的增删改查(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('数据库操作成功')

sql跨表查询_白话django之ORM的查询语句相关推荐

  1. web表格增删改_白话django之数据的增删改

    教程源码: z991/django_turital 我个人认为web开发中,最重要的是数据库的设计,就是models的模型设计,web开发说白了就是对数据库的增删改查,今天先看下数据库的增加,修改,和 ...

  2. sql跨表查询_跨表查询经常有,何为跨表更新?

    有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, ...

  3. sql跨表查询_跨表更新,看到自己写的SQL像个憨憨

    有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, ...

  4. sql 数据表归档_如何在考虑规模的情况下归档SQL Server数据

    sql 数据表归档 We manage data in a growing environment where our clients query some of our data, and on o ...

  5. sql server表分区_介绍分区表SQL Server增量统计信息

    sql server表分区 If you are maintaining a very large database, you might be well aware of the pain to p ...

  6. combobox 怎么实现对listview的类别查询_通过 Django Pagination 实现简单分页

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 当博客上发布的文章越来越多时,通常需要进行分页显示,以免所有的文章都堆积在一个页面,影 ...

  7. 高性能mysql 小查询_高性能MySql进化论(十一):常见查询语句的优化

    总结一下常见查询语句的优化方式 1        COUNT 1.       COUNT的作用 ·        COUNT(table.filed)统计的该字段非空值的记录行数 ·         ...

  8. 12333新农合网上查询_新农合医保查询缴费平台|新农村医疗保险网上缴费平台

    这个智慧新农合新农合患者就诊从挂号到缴费,不用再拿着各种票据在报销处和收费处之间奔走,也不用担心票据不完整造成无法正常报销的情况,只需携带本人有效身份证和农合本,凭身份证号码或新农合号码即可实时报销所 ...

  9. 模糊匹配查询_必须掌握的6个查询函数应用技巧,办公必备,收藏备用!

    在Excel中,有一类函数被称为查找和引用函数,今天,小编给大家分享6个查询函数(Choose.Lookup.Hlookup.Vlookup.Match.Index)的应用技巧,可以收藏备用哦! 一. ...

最新文章

  1. centos下配置gitosis服务器
  2. CentOS下双网卡单网关路由配置
  3. PHP中文URL编解码(urlencode()rawurlencode()
  4. java调用、执行groovy代码
  5. python 绘制分形树
  6. Redis的常用命令及数据类型
  7. sysadmin默认密码_Sysadmin指南,开源电子邮件客户端,macOS应用程序,SELinux,Firefox扩展等...
  8. 未经专业销密的计算机设备,DOC1-题
  9. 钢材规格解读的软件_《钢结构设计标准》解说专题(0)—钢结构的材料选择...
  10. 计算机数值分析为什么那么难,数值分析方法
  11. Maven 使用本地Tomcat9 一键启动和热部署
  12. 大淘客php源码美化版,【完整包】大淘客cms升级源码v12221 大淘客二次开发源码 - 下载 - 搜珍网...
  13. Altium Designer -- 精心总结
  14. 计算机sci转让,sci论文有没有转让的
  15. python 几个倒叙方法
  16. 半导体激光芯片商长光华芯完成B轮1.5亿融资,推进三类主营业务战略建设
  17. Eigen求特征值与特征向量
  18. 还原SQL Server数据库
  19. 看懂UML类图和时序图
  20. 支付宝钱包系统架构图解,真的太优秀了!

热门文章

  1. mysql jdbc 绑定变量_jdbc测试mysql数据库sql预解析(绑定变量)
  2. mysql跳过安全_Navicat连接MySQL数据库
  3. python 3d大数据可视化_基于Python的数据可视化库pyecharts介绍
  4. java inireader_java读取配置文件 Java中如何设置读取ini配置文件?
  5. windows7系统如何设置远程连接
  6. U盘装win7系统出现question(1808)的原因与解决方法
  7. mongodb与java连接_MongoDBJava连接
  8. Spring Boot框架中使用Jackson的处理总结
  9. lombok之@RequiredArgsConstructor注解
  10. java is a like a_JAVA基础——is-a 、have-a、和 like-a的区别