sql跨表查询_白话django之ORM的查询语句

00edf4143e811752337e62a668684ef0.png

教程源码: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('数据库操作成功')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看不懂论文代码怎么办_学位论文中的公式排版(制表位+mathtype+域)

写在前面为什么把公式排版单独拉出来写一篇文章呢?因为公式排版实在是太难了。公式居中标号右对齐,简直反人类好么。在学校期间一直寻找方便的公式排版自动编号方法,但搜索出来的大多只是用到了制表位,公式标号还要自己敲。最后毕…

利用trunk实现vlan内通信_实现不同VLAN间通信——单臂路由

单臂路由是一种实现不同VLAN间通信的技术,其方法是在虚拟机内接口上配置虚拟子接口。该技术是一种应急技术,仅仅用于网络预算不足,无力购买三层交换机,或者网络规模很小的情况下使用。一、实验路由器只需要一个端口和交换机(二层)…

java dispatchevent_java事件处理机制

java中的事件机制的参与者有3种角色:1.event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中2.event source:具体的接受事件的实体&#xff0…

java中的action是指什么_Struts2【开发Action】知识要点

前言前面Struts博文基本把Struts的配置信息讲解完了.....本博文主要讲解Struts对数据的处理Action开发的三种方式在第一次我们写开发步骤的时候,我们写的Action是继承着ActionSupport类的...为啥我们继承了ActionSupport类呢?下面我就会讲解到继承Action…

hql 查询条件 set集合_Redis从入门到深入-Sorted_set的value

1. sorted_set 类型新的存储需求,数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式需要的存储结构:新的存储模型,可以保存可排序的数据sorted_set类型:在set的存储结构基础上添加可排序字段2…

pdm生成java_PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换

本篇文章主要介绍了PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换 超详细过程(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下1.软件准备软件:Navicat 11.1,Powerdesigner 152.安装步骤第一步&…

java里面如何加入高级的东西_如何成为一名Java高级架构师

近些年来互联网快速发展,现阶段的数据量和高并发的诉求,引起了不少传统的技术人员的力不从心,企业愈发关注到了系统架构的重要性,既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的领导型人物——Java架构师应…

mysql获取最好成绩对应数据的其他项_开源数据同步神器——canal

前言如今大型的IT系统中,都会使用分布式的方式,同时会有非常多的中间件,如redis、消息队列、大数据存储等,但是实际核心的数据存储依然是存储在数据库,作为使用最广泛的数据库,如何将mysql的数据与中间件的…

window访问不到linux的activemq_springboot整合开源项目测试拦截接口访问的频率

本节目标本篇文章主要是介绍以下springboot整合开源项目,实现反爬虫接口防刷的demo,额外的介绍一下axios的基本用法;所以本篇文章阅读起来相对轻松。OK,下面开始整合.引入项目依赖cn.keking.project kk-anti-reptile …

sql server限制查询条数_18. Django 2.1.7 查询集 QuerySet

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。不管什么查询,返回的结果都基本是查询集QuerySet,如下:In [16]: MiddlewareInfo.objects.all()Out[16]: 1)>, 2)>,…

ecs 云服务器 管理控制台_阿里云ECS服务器监控资源使用情况

阿里云Ecs服务器运维过程中,无论是Centos系统还是Windows系统,有时候我们需要监控分析最新的服务器资源利用率等运行情况,例如最近3个小时CPU使用率情况、内存使用率、网络流入带宽、网络流出带宽、服务器TCP连接数等数据状况。上述提到的这些…

svg 地图_找地图素材?有这个网站就够了!

文 | 孙宁使用地图类的素材最担心什么?答案是:地图数据的准确性!设想,你辛辛苦苦找来的地图素材,却被人发现是一个假的地图,那可是要犯错误滴~今天给大家推荐一个地图网站,完全不用担心这个问题…

hadoop设置java环境_hadoop安装(3)_Linux配置JDK环境

hadoop分布式集群安装的过程中要先给Linux系统配置好JDK环境,因为hadoop是基于Java开发的。所以本文主要介绍如何在centos上安装jdk环境,主要步骤如下:1、去Oracle官网下载Linux版本的jdk,地址如下:笔者下载的是JDK1.8…

sqlplus怎样将名次显示在表的后面_数据透视表-01 3种分析方法比拼,助你步入透视表的知识宝殿...

数据透视表通俗的讲就是一种在EXCEL表中对数据进行分析汇总的方式,它可以方便的排列、汇总复杂数据,更加清晰的查看、分析隐藏在数据内部的信息。另外在菜单栏数据选项下的合并计算和分类汇总也可以进行简单的统计分析下面我们通过一个小例子来了解一下合…

php引用计数器,PHP 引用计数器 通俗版解释_PHP教程

PHP 引用计数器 通俗版解释概述最近看PHP中的引用计数器部分,首先被各种绕晕,然后通过看博客和分析后,总结了一个比较通俗的解释,能帮助自己很好地记忆,也希望能帮助到各位读者。这里分享一遍博文,是比较正…

windows c语言 http https检测_C语言编程工具的选择

1.先说说我的故事我是2007年上的大学,一所双一流工科大学。专业是计算机科学与技术。我们计算机专业没有C语言这门课。其他工科专业会学C语言这门课。据我所知,其他的工科专业需要过C语言2级考试。计算机专业不用考2级、3级...这些考试。我们计算机专业学…

php 按照laravel5.5,Laravel5.5 综合使用

使用 Laravel5.5 开发一个自动交割的项目,把使用到的开源扩展包及特性整理起来,以供后续使用。一、安装IDE提示工具Laravel IDE Helper 是一个极其好用的代码提示及补全工具,可以给编写代码带来极大的便利。1、安装# 如果只想在开发环境安装请…

usb声卡驱动_iCON ProDrive第三代USB声卡驱动全新发布!

2019年3月,iCON官方发布了一款全球首创——全新一代“ProDrive III”USB声卡驱动,iCON所有系列USB声卡(包括带声卡的MIDI键盘)已全面启用ProDrive III !iCON ProDrive III由iCON的国际工程师团队微调的高品质模拟元件和电路,可同时…

分数小数互换图_重复控制器学习心得(二)——超前环节的分数化和校正因子的引入...

本文仅作为学习记录,欢迎各位提出宝贵建议1、超前补偿环节的分数化在上周我学习了分数阶RC的实现方式,无独有偶,超前补偿环节也可以应用插值的方式来近似分数阶补偿。整数阶超前补偿的弊端主要有二:一、当采样频率和固定频率的比值…

java中execquery(),javaee登录界面

首先在此之前我们应该正确安装数据库,以及eclipse(javaee)文件包。1.首先在javaee中建立新的项目2.右键点击WebContent-New-JSP File,新建jsp(动态)文件。(想在哪个文件夹里添加jsp文件,就直接右击文件夹新建,注意一定不要展开文件…