Django(22)Django执行SQL语句

Posted 修炼之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django(22)Django执行SQL语句相关的知识,希望对你有一定的参考价值。

前言

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)

以上是关于Django(22)Django执行SQL语句的主要内容,如果未能解决你的问题,请参考以下文章

django 面试题

django迁移问题

执行Django原生的sql语句

Python Django 之 直接执行自定义SQL语句

如何查看Django ORM执行的SQL语句

Django调试models输出的SQL语句