iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Django中怎么执行原生SQL
  • 463
分享到

Django中怎么执行原生SQL

2024-04-02 19:04:59 463人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关Django中怎么执行原生sql,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。表结构文件:djanGo_project/app01/mo

这期内容当中小编将会给大家带来有关Django中怎么执行原生sql,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

表结构

文件:djanGo_project/app01/models

class Book(models.Model):     title = models.CharField(verbose_name="书名", max_length=32)     describe = models.TextField(verbose_name="描述")     author = models.CharField(verbose_name="作者", max_length=32)     publisher = models.CharField(verbose_name="出版社", max_length=32)     publisher_date = models.DateField(verbose_name="publisher")

就是一个很简单的图书表

通过admin录入一些数据测试使用

Django中怎么执行原生SQL

extra方式

强烈建议,不用学,没毛用

raw方式

这个相比较extra,还是比较有用的,

语法如下

models.表名.objecs.raw(sql) models.表名.objecs.raw(sql,[参数1,参数2])

注:如果没有参数,就只写sql语句,如果由参数,后面需要用列表,如图所示

举例

Django中怎么执行原生SQL

返回的仍然一个个的Book对象

真正的原生sql方式

上述的,其实还是和django的model有些绑定。但是我就是说,我就是想要原生sql,不要跟任何绑定。

这里说一下,千万不要在django使用pyMysql执行原生sql,会发生一些奇怪的问题。一定要导入from django.db import  connection执行sql。代码如下:

from django.db import connection def book_list(request):     # 真正的原生sql,     cursor = connection.cursor()     print(type(cursor))     cursor.execute("select * from app01_book where id=%s", [1, ])     raw = cursor.fetchall()     print(raw)

返回内容如下图所示:

Django中怎么执行原生SQL

可以看到,返回的是列表里面套一个个的数组。我就在想,有没有什么办法能将查询出来的sql,直接返回成字典呢?答案是当然可以!

执行原生sql并且返回成dict

我将执行原生sql并且直接返回成字典的方式封装成了两个函数

一个是查询多个,代码如下所示:

def query_all_dict(sql, params=None):     '''     查询所有结果返回字典类型数据     :param sql:     :param params:     :return:     '''     with connection.cursor() as cursor:         if params:             cursor.execute(sql, params=params)         else:             cursor.execute(sql)         col_names = [desc[0] for desc in cursor.description]         row = cursor.fetchall()         rowList = []         for list in row:             tMap = dict(zip(col_names, list))             rowList.append(tMap)         return rowList

一个是查询一个,代码如下所示:

def query_one_dict(sql, params=None):     """     查询一个结果返回字典类型数据     :param sql:     :param params:     :return:     """     with connection.cursor() as cursor:         if params:             cursor.execute(sql, params=params)         else:             cursor.execute(sql)         col_names = [desc[0] for desc in cursor.description]         row = cursor.fetchone()         tMap = dict(zip(col_names, row))         return tMap

用法如下,直接在视图中调用函数

Django中怎么执行原生SQL

返回结果如下,直接是列表套字典格式

Django中怎么执行原生SQL

那查询带条件的怎么办哪,其实和pymysql一个样

Django中怎么执行原生SQL

返回结果

Django中怎么执行原生SQL

但是有个问题,上面的查询,我们明明知道,让只会返回一个值,但是还是返回的是列表套字典格式,似乎不太对呐?

其实上述我写的是两个办法,如果确定就查询一个值,使用query_one_dict方法。

Django中怎么执行原生SQL

Django中怎么执行原生SQL

上述总结

django中执行原生sql有3种方式,extra,raw,from django.db import connection

其中extra基本没用,raw凑合,但是和models有绑定,connection最灵活,但是默认返回的是[tuple,tuple,tuple,]格式

经过改良,封装出两个方法,query_all_dict,query_one_dict,一个是查询多个,一个是查询单个,并且返回成[dict,dict,dict,]

建议

只使用query_all_dict,query_one_dict

项目代码

django_exec_sql.zip

上述就是小编为大家分享的Django中怎么执行原生SQL了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: Django中怎么执行原生SQL

本文链接: https://www.lsjlt.com/news/58017.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Django中怎么执行原生SQL
    这期内容当中小编将会给大家带来有关Django中怎么执行原生SQL,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。表结构文件:django_project/app01/mo...
    99+
    2024-04-02
  • django怎么执行原生SQL查询
    本篇内容介绍了“django怎么执行原生SQL查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录执行原生 SQL 查询执行原生查询1 普...
    99+
    2023-06-20
  • django执行原生SQL查询的实现
    目录执行原生 SQL 查询1、执行原生查询1.1 普通查询1.2 将查询字段映射为模型字段1.3 索引查询1.4 将参数传给 raw()2、直接执行自定义 SQL2.1 指定连接数据...
    99+
    2024-04-02
  • django执行migrate无法生成表怎么办
    这篇文章主要讲解了“django执行migrate无法生成表怎么办”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“django执行migrate无法生成表怎么办”吧!django每修改一次模板...
    99+
    2023-06-02
  • 如何使用 Golang 执行原生 SQL 查询?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • SQL Server中怎么执行动态SQL
    这篇“SQL Server中怎么执行动态SQL”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL Se...
    99+
    2023-06-30
  • Django怎么使用原生SQL查询数据库
    这篇文章主要介绍“Django怎么使用原生SQL查询数据库”,在日常操作中,相信很多人在Django怎么使用原生SQL查询数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Django怎么使用原生SQL查询...
    99+
    2023-07-06
  • gorm 执行原生sql实现批量插入数据
    可以使用 GORM 的 DB 对象来执行原生 SQL 操作,然后结合 SQL 的 INSERT INTO 语句来实现批量插入数据。 以下是一个示例代码,假设我们有一个 users 表,包含 id、na...
    99+
    2023-09-20
    sql 数据库 mysql golang
  • django中使用原生sql语句的示例
    这篇文章给大家分享的是有关django中使用原生sql语句的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。raw# row方法:(掺杂着原生sql和orm来执行的操作)res = ...
    99+
    2023-06-14
  • MyBatis中怎么执行SQL语句
    在MyBatis中执行SQL语句可以通过Mapper接口和映射文件来实现。以下是一般步骤: 1、创建Mapper接口:在Mapper...
    99+
    2024-03-07
    MyBatis
  • DB2中怎么执行SQL查询
    在DB2中执行SQL查询非常简单,只需要使用SELECT语句即可。以下是一个示例: SELECT * FROM table_...
    99+
    2024-04-09
    DB2
  • Spark中怎么执行SQL数据
    在Spark中,可以通过以下步骤执行SQL数据: 创建一个SparkSession对象,用于连接和操作Spark集群。可以使用如下...
    99+
    2024-04-09
    Spark SQL
  • db2中怎么执行sql语句
    在DB2中执行SQL语句有多种方法,以下是其中一种常用的方法: 打开DB2命令行终端或者连接到DB2数据库的客户端工具; 输入以下...
    99+
    2024-05-10
    DB2 sql
  • postgresql中怎么执行sql文件
    在 PostgreSQL 中执行 SQL 文件有多种方法: 使用 psql 命令行工具: psql -U <用户名>...
    99+
    2024-04-09
    postgresql
  • MyBatis中怎么使用原生SQL
    在MyBatis中使用原生SQL可以通过使用<select>, <insert>, <upd...
    99+
    2024-03-07
    MyBatis
  • 在Jpa框架下拼接原生sql 并执行的操作
    利用jpa的entityManager 执行sql 并执行 其中: EntityManager.createNativeQuery(SQL) 返回的是Object对象 en...
    99+
    2024-04-02
  • 怎么在MyBatis中执行SQL语句
    这期内容当中小编将会给大家带来有关怎么在MyBatis中执行SQL语句,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基础组件我们要理解 Mybatis 的执行过程,就必须先了解 Mybatis 中都有哪一...
    99+
    2023-06-15
  • django中使用原生sql语句的方法步骤
    raw # row方法:(掺杂着原生sql和orm来执行的操作) res = CookBook.objects.raw('select id as nid from ...
    99+
    2024-04-02
  • SQL中怎么执行进展优化
    这篇文章将为大家详细讲解有关SQL中怎么执行进展优化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。聚集索引扫描SELECT * ...
    99+
    2024-04-02
  • oracle中怎么查看sql执行计划的执行顺序
    这篇文章主要讲解了“oracle中怎么查看sql执行计划的执行顺序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle中怎么查看sql执行计划的执行顺...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作