Django使用原生SQL查询数据库详解

yizhihongxing

关于使用Django进行原生SQL查询,我们需要先了解一下Django提供给我们的两种方式:

  1. 使用自定义的SQL作为Django查询的一部分,基本与SQLalchemy等ORM框架使用方式相同。此方式执行的是基于Django所定义的模型中的数据查询,且在Django的查询集上已经默认处理了ORM的一些坑点使其可读性更清晰;

  2. 使用Django提供的 django.db.connectionsconnection.cursor() 方法,直接在数据库中执行原生SQL语句,执行的是纯净原生SQL查询,但相较于前面的方式更为麻烦。

接下来,我们以两个示例详细介绍这两种方式的使用方法。

使用自定义SQL查询

这种方式需要借助Django提供的 Model.objects.raw() 方法,并传入自定义SQL语句,因会执行Query拼接操作,所以仅在需要自定义的数据查询时使用。

下面是示例:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

def get_person():
    return Person.objects.raw('SELECT * FROM myapp_person')

在这里,我们自定义了SQL SELECT * FROM myapp_person 查询Person这个模型中的数据。

直接执行SQL

使用Django提供的 connection.cursor() 搭配 connection.execute() 方法即可执行原生SQL。

from django.db import connection

with connection.cursor() as cursor:
    cursor.execute("SELECT * FROM myapp_person")
    row = cursor.fetchone()

在这里,我们使用 cursor.execute() 方法来执行我们的原生SQL语句,接下来就可以通过获得的 row 来访问数据。

当然,除了 fetchone() 方法还支持其他的方法,如 fetchall()fetchmany() 等,具体使用请查看Django官方文档。

以上就是Django使用原生SQL查询数据库的完整攻略及两个示例说明,希望能帮到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django使用原生SQL查询数据库详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django【性能提升篇】

    数据库部分 一、查询优化 二、持久化数据库连接   django1.6以后已经内置了数据库持久化连接,很多人使用PostgreSQL作为它们的线上数据库系统,而当我们连接PostgreSQL有时会显得很慢,这里我们可以进行优化。  没有持久化连接,每一个网站的请求都会与数据库建立一个连接。如果数据库不在本地,尽管网速很快,这也将花费20-75ms.   设置…

    Django 2023年4月12日
    00
  • django2笔记之路由path语法的实现

    下面是详细讲解“django2笔记之路由path语法的实现”的完整攻略: 1. 路由path语法概述 在Django中,路由用于匹配URL,并将请求分发到对应的视图函数。而路由的定义则是通过一个Python模块来完成的,这个模块通常被称作“路由表”。 在Django 2开始,我们使用path()函数定义路由而不是url()函数。和旧版本的url()函数相比,…

    Django 2023年5月16日
    00
  • Django框架之django admin的命令行详解

    Django框架之django admin的命令行详解 Django框架内置了一个功能强大的管理后台django admin,可以通过命令行对其进行配置和管理。 配置命令 createsuperuser 该命令用于创建超级管理员用户,语法如下: python manage.py createsuperuser changepassword 该命令用于修改用户…

    Django 2023年5月16日
    00
  • django:token认证,以及http401和http403的区别

    首先token认证环境搭建: 安装模块:pip install djangorestframework 在settings中添加参数: 如图: 继续添加REST_FRAMEWORK项: 如图: 配置如下: REST_FRAMEWORK = { # 权限验证,全局配置 “DEFAULT_PERMISSION_CLASSES”:( ‘rest_framework…

    Django 2023年4月12日
    00
  • django实现用户注册实例讲解

    Django实现用户注册的完整攻略 在Django中实现用户注册,通常需要以下步骤: 创建注册页面表单 处理表单数据 创建用户账号 跳转到登录页面 下面分两个示例来说明。 示例1:基于Django自带的用户认证系统 创建注册页面表单 在Django自带的用户认证系统中,可以使用Django内置的UserCreationForm表单,可以通过以下方式导入: f…

    Django 2023年5月16日
    00
  • 使用uwsgi启动django项目

    workon mycrm 751 pip3 list 752 pwd 753 pip3 freeze > requirements.txt 754 ls 755 cat requirements.txt 756 deactivate 757 mkvirtualenv nginx_crm 758 pip3 list 759 clear 760 ls 76…

    Django 2023年4月12日
    00
  • Django通用视图APIView和视图集ViewSet的介绍和使用(Django编程-1)

    1.APIView DRF框架的视图的基类是 APIViewAPIView的基本使用和View类似 Django默认的View请求对象是 HttpRequest,REST framework 的请求对象是 Request。Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。HttpRequest.GET ————> Request.…

    Django 2023年4月11日
    00
  • Django 项目重命名的实现步骤解析

    下面是 Dajngo 项目重命名的实现步骤解析的完整攻略: 第一步:备份项目文件 在重命名项目之前,必须先备份所有项目文件。备份可以防止出现不可预知的错误。 第二步:重命名项目目录 将项目目录重命名为新名称。例如,将原项目目录名“old_project”改为“new_project”。 示例: mv old_project/ new_project/ 第三步…

    Django 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部