Django ORM 中的单表查询 API(1)

Django ORM 中高级单表查询 API(2) Django ORM 中的单表查询 API(1)在上一篇博文中,我们探讨了 Django ORM 中单表查询 API 的基础知识,重点是 all()、filter()、get()、first() 和 last()。在本博文中,我们将深入探讨 Django ORM 中更高级的查询方法及其用法,包括 exclude()、order_by()、count()、reverse()、exists()、values()、values_list() 和 distinct()。 阅读详情

在 Django 中,对象关系映射(ORM)提供了一种功能强大、表现力丰富的数据库交互方式。ORM 允许开发人员使用高级 Python 代码执行数据库查询,从而更轻松地处理数据库实体。

下面,我们将探讨 Django ORM 中单表查询 API 的用法,重点是 all()、filter()、get()、first() 和 last()。  

1、all() 方法

all()方法:返回一个包含数据库表中所有对象的 QuerySet。当在模型上调用该方法时,它会生成一个 SQL 查询,以检索相应表中的所有记录。例如
```
ret = Book.objects.all()
```
这将从 `Book` 表中获取所有记录,并以 QuerySet 的形式返回。

2、filter()方法

filter()方法:用于根据某些条件缩小查询结果的范围。它接受指定过滤条件的关键字参数。例如
```
ret = Book.objects.filter(name="西游记")
```
这将从 `Book` 表中检索名称为 "西游记 "的记录。

3、get()方法

get()方法:用于从数据库中检索符合指定条件的单个对象。该方法只期望得到一个结果,如果有零条或多条匹配记录,则会引发异常。例如
```
ret = Book.objects.get(name="西游记")
```
这将从 `Book` 表中检索名称为 "西游记 "的记录。

4、first() 和 last() 方法

first()和last()方法:分别用于从查询结果中检索第一个和最后一个对象。它们会从 QuerySet 返回一个模型对象。例如
```
fbook = Book.objects.all().first()
lbook = Book.objects.all().last()
```
通过这些方法,可以从 `Book` 表中检索第一条和最后一条记录。

5、代码演示 

############### 单表查询API ##################
def query(request):
    # 1 all() : 调用者 objects管理器 , 返回 QuerySet
    # ret=Book.objects.all()
    # SELECT `app01_book`.`id`, `app01_book`.`name`, `app01_book`.`price`, `app01_book`.`pub_date`,
    # `app01_book`.`publish` FROM `app01_book` LIMIT 21
    # print(ret)
    # <QuerySet [<Book: Book object (7)>, <Book: Book object (8)>, <Book: Book object (13)>,<Book: Book object (14)>, <Book: Book object (15)>, <Book: Book object (16)>,<Book: Book object (17)>, <Book: Book object (18)>]>
    # <QuerySet[ < Book: 111 >, < Book: linux >, < Book: java >, < Book: java999 >, < Book: 飘 >, < Book: 红楼梦 >, < Book: 西游记 >, < Book: 水浒传 >] >

    # 2 filter():调用者 objects管理器, 返回 QuerySet
    # ret=Book.objects.filter(name="西游记")
    # SELECT `app01_book`.`id`, `app01_book`.`name`, `app01_book`.`price`, `app01_book`.`pub_date`,
    # `app01_book`.`publish` FROM `app01_book` WHERE `app01_book`.`name` = '西游记' LIMIT 21
    # print(ret)
    # <QuerySet [<Book: 西游记>]>

    # 3 get() :调用者 objects管理器,返回 查询到的 models对象,且只能查出来一个,否则报错
    # ret=Book.objects.get(name="西游记")
    # print(ret) # 西游记   __str__()
    # print(ret.name) # 西游记

    # 4 first(),last() : 调用者 QuerySet,返回model对象
    # fbook=Book.objects.all()[0]
    # fbook = Book.objects.all().first()
    # lbook = Book.objects.all().last()

    return HttpResponse("query success")

6、小结

Django ORM 中的单表查询 API 提供了一种使用高级 Python 代码与数据库交互和检索数据的便捷方法。通过使用 `all()`、`filter()`、`get()`、`first()` 和 `last()` 等方法,开发人员可以轻松执行各种数据库查询。

通过了解和利用这些方法,开发人员可以在其 Django 应用程序中高效地查询和操作数据,从而使开发过程更加简化、更有成效。

《深入解析 Django ORM 复杂查询优化:如何提升 SQL 执行效率》 本文深入探讨了 Django ORM 复杂查询的优化策略,旨在提升 SQL 执行效率。文章首先指出了数据库查询中常见的性能问题,如 N+1 查询、未优化的索引等,并介绍了 Django ORM 查询的特性。随后,提出了一系列关键优化策略,包括使用 select_related() 进行 JOIN 预加载、prefetch_related() 进行多表关联优化、only() 和 defer() 限制字段查询、索引优化、annotate() 和 F() 提高计算效率,以及直接编写原生 SQL 查询。 阅读详情

相关推荐

使用Django构建搜索接口

Django是一个流行的Python Web框架,提供了强大的工具和功能,用于构建高效的Web应用程序。在许多Web应用程序中,搜索功能是一个关键的组成部分,可以帮助用户快速找到他们需要的信息。在本文中,我们将使用Django框架来构建一个简单的搜索接口。首先,确保您已经安装了Python和Django,并创建一个新的Django项目。打开终端或命令提示符,并导航到您要创建项目的目录。在上面的模板中,我们首先显示一个搜索表单,用户可以在其中输入搜索查询。在搜索功能中,我们需要定义一个模型来存储搜索的数据。

JfpBlockchain的博客 145

django 过滤器first last 200312

first 功能 返回数据中的第一个成员 例子 视图 模板 效果 last 返回最后一个成员

鲸鱼编程-python全栈 598

django之十五--ORM查询方法汇总

一、前言 django的ORM框架提供的查询数据库表数据的方法很多,不同的方法返回的结果也不太一样,不同方法都有各自对应的使用场景。 主要常用的查询方法个数是13个,按照特点分为这4类: 方法返回值是可迭代对象QuerySet:all(),filter(),exclude(),order_by(),reverse(),values(),values_list(),distinct(); 方法返回值是单个对象:get(),first(),last(); 方法返回值是布尔值:exists(); 方法

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 4595

Django中的ORM及操作

1 ORM 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单说,ORM通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 ORM在业务逻辑层和数据库层之间充当了桥梁的作用。 ​ 2 Django中的ORM 2.1 model ​ 在Django中model是你数据的单一、明确的信息来源。它包含了你存储的数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表

weixin_44856211的博客 1150

Django学习第三天:Django中的ORM、Python DB API规范

你可以在模型中定义自定义方法,这些方法可以在实例上调用。比如,你可以为Bookreturn f"Django的ORM通过将数据库表映射为Python类并提供简单易用的API,使得操作数据库变得更加直观。通过定义模型类、迁移数据库、执行增删改查等操作,Django能够帮助开发者更快速地构建和管理数据库。

百锦再的博客 1万+

Django的ORM常用查询操作总结

首先这里给出一个学生model: class Student(models.Model): name=models.CharField(max_length=10) sex = models.IntegerField(choices=((1,"男"),(2,"女")),default=1) birth = models.DateField(null=True) ...

Lin的博客 1万+

django-ORM查询数据后处理方法

目录 get_or_create count first, last exists distinct update delete get_or_create 根据某个条件进行查找,如果找到了返回这条数据,如果没有找到,就创建一个 格式:模型类.objects.get_or_create(字段=值) 但是创建字段要根据模型字段类型,如果不为空的话也要加上去 get_or_create返回值是元...

weixin_44737646的博客 907

Hermes Agent Windows安装教程:本地智能体离线部署实战

本地智能体(Local Agent)是一种运行在用户设备端、无需云端依赖即可响应自然语言指令并自动化执行任务的轻量级AI运行时框架。其核心原理基于配置驱动的任务监听与脚本调用机制,通过服务化驻留实现持续响应能力,技术价值在于保障数据隐私、规避API调用限制、适配内网及老旧系统环境。典型应用场景包括财务报表自动整理、科研仪器数据归档、IT资产变更通知等Windows桌面自动化需求。本文聚焦Hermes Agent这一主流开源实现,围绕Windows平台特有的服务注册、权限模型、杀软拦截、中文路径与YAML编码

weixin_34411563的博客 433

Django之ORM表操作

我们可以直接从django提供的接口中获取数据库连接,然后像使用pymysql模块一样操作数据库。

2401_88752684的博客 1335

S32K1XX调试--快速定位HardFault

1、背景 程序运行,发现程序跑飞到HardFault,但不清楚为什么会跑到HardFault中断处理函数去。 2、分析 要想知道为什么会跑到HardFault_Handler中去,就很有必要了解一下,程序上一条执行的是那条命令。 根据汇编指令可以定位上条指令,但如果对汇编指令不是很了解的话,那就很头疼了 根据单步运行也能实现定位,但如果程序量很大,又很杂,可能花费的时间就比较久些。 3、问题查找 提供一种不需要懂汇编指令的查找方法,方法如下: 在中断处理函数中插入以下代码,以及另外定义

ping_devil的博客 4020

二相混合式步进电机闭环矢量控制simulink仿真(含仿真文件)

在位置跟踪伺服系统中二相混合式步进电机闭环矢量控制simulink仿真

qq_39023633的博客 2万+

django orm关联查询_django中orm的多表查询

一、创建模型下面我们通过图书管理系统,来设计出每张表之间的对应关系。通过上图关系,来定义一下我们的模型类。from django.db import modelsclass Book(models.Model):title = models.CharField(max_length=32)price = models.DecimalField(max_digits=5, decimal_place...

weixin_39765290的博客 1116

零代码进行单细胞数据全流程分析教程

我开发的本地电脑无限使用无限分析作图的生信零代码一键分析电脑软件神器OmicsTools 软件在github上的zihaoxingstudy1/OmicsTools仓库 中,大家可以下载安装OmicsTools进行各种生信分析和可视化作图。

qq_40073899的博客 3635

Django基础之ORM单表操作

一 ORM简介  MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是“对象-关系-映射”的简称。(Object Relational Mapping,简称ORM)(sqlalc...

weixin_30268071的博客 839

别再只调颜色阈值了!优化K210色块追踪性能的5个关键参数与实战技巧

本文深入探讨了K210色块追踪性能优化的五大核心策略,包括图像预处理参数精细调控、find_blobs参数进阶配置、运动控制算法升级、硬件时序优化以及可视化调试系统构建。通过实战技巧和参数调整方法,帮助开发者提升K210在色块追踪项目中的识别稳定性和响应速度,适用于云台追踪等应用场景。

weixin_42531588的博客 227

车辆TBOX科普 第69次 TBOX行业发展趋势与就业前景深度解析

TBOX技术革新驱动汽车智能化发展 Telematics BOX(TBOX)正快速从车辆状态监控器进化为整车智能核心,市场年增速超25%,2025年规模将达150亿美元。技术呈现四大革新方向:5G与V2X集成实现多模通信网关,支持10-20Gbps高速传输;多模GNSS融合定位精度达厘米级,北斗系统提供独特优势;边缘计算架构使TBOX具备本地AI处理能力,减少95%数据上传;硬件安全模块(HSM)成为标配,满足EVITA标准的安全需求。这些技术突破正重塑TBOX架构,使其从单纯通信管道升级为智能网联汽车的关

IT深耕十余载,大道之简 1834

django orm关联查询_Django--ORM 多表查询

一 . 建立外键一对一建立外键外键名称 = models.OneToOneField(to='要连接的类名', to_field='字段')一对多建立外键外键名称 = models.ForeignKey(to='要连接的类名',to_field='字段')#外键要写在一对多的 那个多的类 下面,比如一个老师对应很多学生,外键就要写在学生的下面多对多建立外键外键名称 = models.ManyToM...

weixin_39698255的博客 825

AB相增量式编码器以及STM32定时器编码器模式测速/测距离(HAL库)

编码器(Encoder)是一种用于测量旋转运动或位置的设备。编码器通常与定时器模块一起使用,以便在微控制器中获取和计算旋转的脉冲数量,从而确定物体的运动方向和距离。编码器在许多应用中都很有用,例如机器人运动控制、电机位置反馈和位置传感。STM32微控制器提供了多种类型的编码器支持,其中一种常见的编码器类型是增量编码器。增量编码器基于两个脉冲信号通道,通常称为A相和B相。当旋转发生时,这两个信号通道的相位关系会发生变化,从而可以计算出旋转方向和旋转的步数。

嵌入式软件工程师的博客 1万+

Django ORM – 多表实例(聚合与分组查询)

文章目录Django ORM – 多表实例(聚合与分组查询)聚合查询(aggregate)实例实例分组查询(annotate)准备数据和创建模型数据:在 MySQL 命令行中执行:实例实例实例实例实例实例F() 查询实例实例Q() 查询实例实例实例 Django ORM – 多表实例(聚合与分组查询) 聚合查询(aggregate) 聚合查询函数是对一组值执行计算,并返回单个值。 Django 使用聚合查询前要先从 django.db.models 引入 Avg、Max、Min、Count、Sum(首字母大

Allen 1万+

基于卷积神经网络的球罐结构损伤识别

球罐结构损伤识别方法研究 摘要:本研究针对球形储罐(球罐)结构健康监测需求,提出基于卷积神经网络(CNN)的损伤识别方法。通过ANSYS有限元仿真构建包含5种裂纹深度的500组振动信号数据集,设计包含卷积层、池化层和全连接层的CNN网络架构。实验结果表明,该方法在训练集和测试集上分别达到98.4%和96.0%的准确率,验证了其在球罐焊缝损伤识别中的有效性。研究提供了完整的MATLAB实现代码,为球罐结构智能化监测提供了技术参考。 关键词:球罐结构;卷积神经网络;损伤识别;振动信号;深度学习

AI的内部世界的博客 122

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Django ORM - 单表实例

Django ORM 单表操作指南摘要 Django ORM 是 Django 的核心组件,允许通过 Python 对象操作数据库而无需编写 SQL。本文介绍了单表 CRUD 操作: 定义模型: 继承 models.Model 创建模型类 使用 CharField、DecimalField 等定义字段 可通过 Meta 类自定义表名和排序 增删改查操作: 增:create() 或先实例化后 save() 删:delete() 方法 改:修改属性后调用 save() 查: all() 获取所有记录 filte

likuoelie的博客 644

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

django 单表查询

一 ORM简介    MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是“对象-关系-映射”的简称。(Object Relational Mapping,简称ORM)(将来会学一...

a8830324的博客 476

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Django之ORM单表查询13条+外键操作(一对多)

一、ORM介绍 1、ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 ORM在业务逻辑层和数据库层之间充当了桥梁的作用。 2、ORM由来 让我们从O/R开始。字母O起源于"对...

weixin_30835933的博客 794

【Django】Django ORM Model的基本查询操作API

其中第一个元素是实例对象,第二个元素是布尔值,标识返回的实例对象是否是新创建的。由于Topic需要一个User对象,所以,先获取username是admin(超级用户)的User对象,再去创建Topic对象。它的管理器代表的是一个单一的对象,而不是对象集合,且名称变成了小写的Model名。在查询Topic的时候可能会考虑User的情况,这是很普遍的场景,也被称作跨关联查询。这样的方法返回的结果是QuerySet,所以,在它们的后面可以继续调用。关系类型也可以实现类似的反向查询,但是对于。

大河之犬的博客 1195

Django之ORM

ORM概念对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。ORM在业务逻辑层和数据库层之间充当了桥梁的作用。ORM由来让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。几乎所有的软件开发过程中都会涉及到对象和关系数据库。

Hacker_Fuchen的博客 2074

Django之ORM操作实用讲解

API的使用快速查找:https://www.django.cn/article/show-15.html ORM的由来 如果你有很多的数据库操作,并且你的Python程序员不是专业的DBA,写的SQL语句很烂,甚至经常写错,怎么办? 聪明的人想出了一个办法:用Python语法来写,然后使用一个中间工具将Python代码翻译成原生的SQL语句,这样你总不会写错了吧?这个中间工具就是所谓的ORM(对...

qq_40890660的博客 2108
上一篇: socket实现web应用的本质
下一篇: 解决Windows系统443端口占用导致Steam商店无法打开的方法
python_198
博客等级 码龄3年 359粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python_198

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值