Django(22)Django执行SQL语句[通俗易懂]

Django(22)Django执行SQL语句[通俗易懂]前言Django在查询数据时,大多数查询都能使用ORM提供的API方法,但对于一些复杂的查询可能难以使用ORM的API方法实现,因此Django引入了SQL语句的执行方法,有以下三种执行方式ext

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

Django在查询数据时,大多数查询都能使用ORM提供的API方法,但对于一些复杂的查询可能难以使用ORM的API方法实现,因此Django引入了SQL语句的执行方法,有以下三种执行方式

  • extra:结果集修改器,一种提供额外查询参数的机制。
  • raw:执行原始SQL并返回模型实例对象。
  • execute:直接执行自定义SQL

以上3种方式,这里只介绍raw方式,用的最多,也最推荐使用
 

raw

只能实现数据查询操作,并且要依靠模型对象,在Pycharm里打开raw源码,如下图所示,它一共定义了4个参数,每个参数如下:

  • raw_query:SQL语句
  • params:如果raw_query设置字符串格式化%s,那么该参数为raw_query提供数值
  • translations:为查询的字段设置别名
  • using:数据库对象,即Django所连接的数据库
    def raw(self, raw_query, params=None, translations=None, using=None):
        if using is None:
            using = self.db
        qs = RawQuerySet(raw_query, model=self.model, params=params, translations=translations, using=using)
        qs._prefetch_related_lookups = self._prefetch_related_lookups[:]
        return qs

上述参数只有raw_query是必选参数,其他参数可根据需求自行选择。我们以模型Student为例,使用raw实现数据查询,代码如下:

students = Student.objects.raw('select * from Student')
    for student in students:
        print(student)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164919.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 掌握JedisPoolConfig参数配置,学会调优技能

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!你好,JedisPoolConfigJava中…

    2022年2月28日
    47
  • fsync函数

    fsync函数fsync函数,将文件数据同步到硬盘功能描述: 系统调用fsync将所有已写入文件描述符fd的数据真正的写道磁盘或者其他下层设备上。用法:#includeintfsync(intfd);#ifdef_POSIX_SYNCHRONIZ

    2022年5月31日
    126
  • 解决笛卡尔积

    解决笛卡尔积消除笛卡尔乘积最根本的原因不是在于连接,而是在于唯一ID,就像学号,一个学生就只有一个学号,学号就是这个学生的唯一标识码。左连接只是以左边的表为基准,左边的ID和右边ID都是唯一,就不会产生笛卡尔现象,如果右边有两个ID对应左边一个ID,就算你是左连接,一样会产生1对多的现象…

    2022年7月11日
    21
  • maven引入包不完全问题

    maven引入包不完全问题

    2020年11月9日
    173
  • 使用Babel将es6转换es5

    使用Babel将es6转换es5目录Babel是什么?命令行转换babel-cli安装使用配置文件babel-polyfill安装在js中使用将Babel集成到webpack中Babel配置webpack配置1)安装webpack2)添加配置文件webpack.config.js3)修改package.json4)打包 拓展npm中save与save-d…

    2022年9月15日
    0
  • C语言system的用法「建议收藏」

    C语言system的用法「建议收藏」C语言system的用法system()在头文件stdlib.h中system()是C语言中为了调用windows系统命令来设置。例:system(“cls”);//清屏system(“pause”);//暂停system(“title名字”);//设置窗口名system(“time/T”);//显示当前时间system(“data/T”);//显示当前日期system(“…

    2022年9月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号