一周学会Django5 Python Web开发-Django5 ORM执行SQL语句

锋哥原创的Python Web开发 Django5视频教程:

2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计49条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV14Z421z78C/Django在查询数据时,大多数查询都能使用ORM提供的API方法,但对于一些复杂的查询可能难以使用ORM的API方法实现,因此Django引入了SQL语句的执行方法,有以下3种实现方法。

  • extra:结果集修改器,一种提供额外查询参数的机制。

  • raw:执行原始SQL并返回模型实例对象。

  • execute:直接执行自定义SQL。

extra适合用于ORM难以实现的查询条件,将查询条件使用原生SQL语法实现,此方法需要依靠模型对象,在某程度上可防止SQL注入。它一共定义了6个参数,每个参数说明如下:

  • select:添加新的查询字段,即新增并定义模型之外的字段。

  • where:设置查询条件。

  • params:如果where设置了字符串格式化%s,那么该参数为where提供数值。

  • tables:连接其他数据表,实现多表查询。

  • order_by:设置数据的排序方式。

  • select_params:如果select设置字符串格式化%s,那么该参数为select提供数值。

参考实例:

bookList = BookInfo.objects.extra(where=["price>%s"], params=[90])

raw只能实现数据查询操作,并且也要依靠模型对象,它一共定义了4个参数,每个参数说明如下:

  • raw_query: SQL语句。

  • params:如果raw_query设置字符串格式化%s,那么该参数为raw_query提供数值。

  • translations:为查询的字段设置别名。

  • using:数据库对象,即 Django 所连接的数据库。

参考实例:

bookList = BookInfo.objects.raw("select * from t_book where price>%s", params=[90])

execute的语法,它执行SQL语句无须经过Django的ORM框架。我们知道Django连接数据库需要借助第三方模块实现连接过程,如 MySQL的mysqlclient模块和SQLite 的sqlite3模块等,这些模块连接数据库之后,可通过游标的方式来执行SQL语句,而 execute就是使用这种方式执行SQL语句,实例如下:

cursor: CursorDebugWrapper = connection.cursor() cursor.execute("select count(*) from t_book where price>90") print(cursor.fetchone())

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

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

相关文章

Linux网络编程---多进/线程并发服务器

一、多进程并发服务器 实现一个服务器可以连接多个客户端,每当accept函数等待到客户端进行连接时 就创建一个子进程 思路分析: 核心思路:让accept循环阻塞等待客户端,每当有客户端连接时就fork子进程,让子进程去和客户…

pnpm 安装后 node_modules 是什么结构?为什么 webpack 不识别 pnpm 安装的包?

本篇研究:使用 pnpm 安装依赖时,node_modules 下是什么结构 回顾 npm3 之前:依赖树 缺点: frequently packages were creating too deep dependency trees, which caused long directory paths issue on Windowspackages were c…

陪丨玩丨系丨统前后端开发流程,APP小程序H5前后端源码交付支持二开!多人语音,开黑,线上线下两套操作可在一个系统完成!

100%全部源码出售 官网源码APP源码 管理系统源码 终身免费售后 产品免费更新 产品更新频率高 让您时刻立足于行业前沿 软件开发流程步骤及其作用: 软件开发是一个复杂而系统的过程,涉及多个环节,以下是软件开发的主要流程步骤及其作用…

UniAD:以规划为导向的端到端自动驾驶

文章链接 这个文章是CVPR2023 Best Paper https://arxiv.org/pdf/2212.10156 提出背景 以往的自动驾驶多数是为不同的任务场景设计部署单独的模型,这样子组成的系统会很复杂如图a。 图b这是多任务共享一个主干,但还是要分离训练,而且不是…

【Redis 开发】Redisson

Redisson RedissonRedisson分布式锁Redisson可重入锁Redission解决超时释放的问题Redission解决锁的判断一次性问题Redission分布式锁主从一致性问题 Redisson Redisson是一个在Redis的基础上实现的java驻内存数据网格,就是提供了一系列的分布式的java对象 官方地址…

《数字化决策》第三版的启示

目录 一、《数字化决策》读后感 二、《数字化决策》给人的启示 三、思考题 一、《数字化决策》读后感 随着科技的飞速发展,数字化已经成为商业领域的核心力量。在这样的背景下,《数字化决策》第三版为我们提供了宝贵的认知提升,帮助我们更…

数据结构(九)---并查集

目录 1.集合 2.集合的相关操作 (1)查(Find): •Find操作的优化 (2)并(Union): •Union操作的优化 1.集合 数据元素之间的逻辑关系可以为集合,树形关系,线性关系,图关系。对于集合而言,一个集合可以划…

【React】CSS 局部样式

书写 CSS 的时候,如果 CSS 文件名包含 module,那么说明该 CSS 是一个局部 CSS 样式文件,类似于 vue 中的 scoped。 .avatarContainer {width: 40px;height: 40px;border-radius: 50%;background: rgb(213, 226, 226); }import styles from ..…

有哪些好用电脑端时间定时软件?桌面日程安排软件推荐 桌面备忘录

随着现代生活节奏的加快,人们对于时间管理和任务提醒的需求越来越大。为了满足这一需求,市场上涌现出了众多桌面便签备忘录软件,它们不仅可以帮助我们记录待办事项,还能定时提醒我们完成任务。在这篇文章中,我将为大家…

ESP-IDF编译系统详解(2)

接前一篇文章:ESP-IDF编译系统详解(1) 本文内容主要参考: 《ESP32-C3物联网工程开发实战》 —— 乐鑫科技 编著 特此致谢! 2. 工程文件结构 工程(Project,也称为项目)是指一个包含…

【继承和多态】

闭上眼睛,什么都不听.............................................................................................................. 文章目录 前言 一、【继承】 1.1【继承的概念】 1.2【 继承的定义】 1.2.1【定义格式】 1.2.2【继承关系和访问限定符】 1.2…

ArcGIS专题图制作—3D峡谷地形

6分钟教你在ArcGIS Pro中优雅完成炫酷的美国大峡谷3D地图 6分钟教你在ArcGIS Pro中优雅完成炫酷的美国大峡谷3D地图。 这一期的制图教程将带我们走入美国大峡谷,让我们一起绘制这张美妙的地图吧!视频也上传到了B站,小伙伴可以去! …