当前位置: 首页 > news >正文

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

在 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 应用程序中高效地查询和操作数据,从而使开发过程更加简化、更有成效。

相关文章:

  • 数学建模实战Matlab绘图
  • HarmonyOS应用开发者高级认证学习认证知识答疑笔记
  • c语言冒泡排序
  • Unity学习之坦克游戏制作(1)开始场景的制作
  • QT上位机开发(MySql访问)
  • STM32-04-STM32时钟树
  • vue 里 props 类型为 Object 时设置 default: () => {} 返回的是 undefined 而不是 {}?
  • 一些UE5 ControlRig小技巧
  • 关于VScode的这个ssh的配置的经验
  • 幻兽帕鲁开服教程——游戏
  • 使用 crypto-js 进行 AES 加解密操作
  • git add -u 什么意思
  • 009 Linux_文件系统 | 软硬链接
  • elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询
  • springboot多数据源支持自定义连接池
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • C++入门教程(10):for 语句
  • ES6--对象的扩展
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • js继承的实现方法
  • RxJS: 简单入门
  • Spark学习笔记之相关记录
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Webpack 4 学习01(基础配置)
  • 基于axios的vue插件,让http请求更简单
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 数据可视化之 Sankey 桑基图的实现
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 云大使推广中的常见热门问题
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 移动端高清、多屏适配方案
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #图像处理
  • $(function(){})与(function($){....})(jQuery)的区别
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一一四)第九章编程练习
  • (转载)OpenStack Hacker养成指南
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net wcf memory gates checking failed
  • .NET开发者必备的11款免费工具
  • .NET中winform传递参数至Url并获得返回值或文件
  • .net中应用SQL缓存(实例使用)
  • @ResponseBody
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [04]Web前端进阶—JS伪数组
  • [20170713] 无法访问SQL Server
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [ARM]ldr 和 adr 伪指令的区别
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法