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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 锂电池升压芯片[通俗易懂]

    锂电池升压芯片[通俗易懂]型号电池 数量工作 模式工作 电压最大 充电 电流工作 电流恒流 恒压 精度输出 电压开关 频率封装说明HM40331-5 节 可设PFM 升压型 开关式 外置MOS4.0V -28V扩流 最大 25W1.7mA1%可调1MHzSOT-26HM40312节5V升压型 开关式 外置MOS最大 5.5V1.0A 以上 可调5mA1%8.4V200KHzSOP-8自适应适配器的

    2022年10月7日
    2
  • vs2010注册密钥_vs2012ultimate密钥

    vs2010注册密钥_vs2012ultimate密钥MicrosoftVisualStudioUltimate2012旗舰版有效注册密钥:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC

    2022年10月14日
    1
  • c语言中char类型转int类型「建议收藏」

    c语言中char类型转int类型「建议收藏」前言在九度oj做acm的时候,经常会遇到了char类型和int类型相互转化的问题,这里进行一下总结。今后,可能会多次更新博客,因为半年做了很多总结,但是都是保存在word文档上了,现在开始慢慢向CSDN博客转移。问题类型char型数字转换为int型转换方法a[i]-‘0’参考程序#include#include#includei

    2022年10月2日
    2
  • 源码网_python 源代码

    源码网_python 源代码源码结构目录可以看到此模块定义了4个属性和12个函数,我们依次来讲解属性源码分析#匹配http://或https://absolute_http_url_regexp=re.compil

    2022年7月29日
    5
  • Android补间动画之ScaleAnimation、AlphaAnimation、RotateAnimation、TranslateAnimation、AnimationSet详解「建议收藏」

    Android补间动画之ScaleAnimation、AlphaAnimation、RotateAnimation、TranslateAnimation、AnimationSet详解「建议收藏」首发:http://blog.csdn.net/harvic880925/article/details/40117115一、概述前两篇,我为大家讲述了利用XML来定义动画及插值器,但在代码中,我们常常是动态生成动画的,所以,这篇将为大家讲述如何用代码生成动态生成动画及插值器。先简单写出各个标签对应的类,方便大家理解:scale—— ScaleAnimatio

    2022年10月11日
    2
  • tomcat闪退

    tomcat闪退原因:①首先考虑端口占用问题      ②环境变量问题         startup.bat文件默认读取的是系统配置的环境变量         可以修改其环境变量         (1) startup.bat开头加上两句话        SETJAVA_HOME=C:\ProgramFiles\Java\jdk1.8.0…

    2022年5月7日
    54

发表回复

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

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