Django 执行原生SQL

news2024/9/24 11:25:01

在Django中,你可以使用Raw SQL queries来执行原生的SQL查询。这对于需要进行复杂查询或Django的ORM无法满足的查询非常有用。

1,添加模型

Test/app11/models.py

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')




class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    publication_date = models.DateField()
    price = models.DecimalField(max_digits=5, decimal_places=2)

    def __str__(self):
        return self.title

2,添加视图函数

Test/app11/views.py

  • 查询所有数据
  • 根据条件查询
  • 多表查询
from django.shortcuts import render
from django.db.models import Q
from django.db import connection


def book_list_raw(request):
    # 使用原生SQL查询所有书籍,基本查询
    with connection.cursor() as cursor:
        cursor.execute("SELECT * FROM app11_book")
        rows = cursor.fetchall()

    for row in rows:
        print(row)

    print('\n')

    # 使用参数化查询防止SQL注入,条件查询
    with connection.cursor() as cursor:
        cursor.execute("SELECT * FROM app11_book WHERE title = %s", ['Python编程'])
        row = cursor.fetchone()

    print(row)

    print('\n')

    # 多表查询
    sql="""select a.*, b.* from app11_book a ,app11_post b where a.id =b.id"""
    Books = Book.objects.raw(sql)
    for book in Books:
        print(book.author, book.content)


    return HttpResponse("查询数据数据")

3,添加路由地址

Test/app11/urls.py

from django.urls import path
from . import views

urlpatterns = [

    path('book_list_raw/', views.book_list_raw, name='book_list_raw'),
]

4,添加表数据

Test/create_books.py

import os
import django

# 设置Django环境,需要指定settings模块
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Test.settings")
django.setup()

from app11.models import Book

def create_books():
    # 创建示例书籍
    book1 = Book(title="1Python编程", author="小强", publication_date="2022-01-01", price=15.99)
    book2 = Book(title="1Django Web开发", author="小龙", publication_date="2022-04-15", price=29.99)
    book3 = Book(title="1算法导论", author="小龙", publication_date="2024-07-20", price=19.99)
    book4 = Book(title="2java入门到弃坑", author="余胜军", publication_date="2019-02-20", price=39.99)
    book5 = Book(title="3c入门到弃坑", author="小龙", publication_date="2012-07-20", price=9.99)
    book6 = Book(title="4c++入门到弃坑", author="小6", publication_date="2024-02-20", price=13.99)
    book7 = Book(title="1python多线程入门", author="小6", publication_date="2025-02-20", price=49.99)

    # 保存书籍到数据库
    book1.save()
    book2.save()
    book3.save()
    book4.save()
    book5.save()
    book6.save()
    book7.save()

    print("数据创建成功!")

if __name__ == "__main__":
    create_books()

Test/create_posts.py

import os
import django

# 设置Django环境,需要指定settings模块
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Test.settings")
django.setup()

from app11.models import Post
from datetime import datetime

# 创建并保存Post对象
post = Post(title="张国荣", content="(英语:Leslie Cheung Kwok Wing,1956年9月12日—2003年4月1日),本名张发宗,香港男歌手、演员、词曲作家[3],并曾经担任电影配乐、排舞、音乐视频导演、艺术总监和电影导演。", pub_date=datetime.now())
post.save()

# 或者使用objects.create()方法
Post.objects.create(title="梅艳芳", content="英语:Anita Mui Yim-fong;1963年10月10日—2003年12月30日),香港女歌手、演员、社会活动家,有“乐坛大姐大”之称。她的形象百变,获奖无数,是香港粤语流行乐坛辉煌鼎盛期的标志性人物,也是香港演艺界第一位同时取得“歌后”及“影后”级殊荣的女艺人。", pub_date=datetime.now())

 

5,访问页面

127.0.0.1:8000/app11/book_list_raw/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

arthas:介绍

文章目录 一、Arthas(阿尔萨斯)能为你做什么?二、运行环境要求三、快速安装四、卸载五、通过浏览器连接arthas 一、Arthas(阿尔萨斯)能为你做什么? Arthas是Alibaba开源的Java诊断工具,深受开发…

buu--web做题(4)

目录 [BJDCTF2020]ZJCTF&#xff0c;不过如此 [BUUCTF 2018]Online Tool [BJDCTF2020]ZJCTF&#xff0c;不过如此 <?phperror_reporting(0); $text $_GET["text"]; $file $_GET["file"]; if(isset($text)&&(file_get_contents($text,r)&q…

vue3运行若依前后台项目步骤(2024-07-19)

环境配置 1、jdk > 1.8 (我的1.8&#xff09; 2、mysql >5.7 (我的5.8&#xff09; 3、navicat (数据库管理器&#xff0c;连接mysql使用 ,我的是15) 4、mysql&#xff08;数据库&#xff0c;我的5.0&#xff09; 4、npm (我的是18.20.0) 5、idea编辑器,webtorm &#x…

Unity UGUI 之 Graphic Raycaster

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 首先手册连接如下&#xff1a; Unity - Manual: Graphic Raycaster 笔记来源于&#xff…

Mike Ferguson:我在麻省理工学院人工智能研究实验室工作一年学到了 5 件事

Mike Ferguson &#xff0c;麻省理工学院大脑和认知科学系 (MIT BCS) 担任研究软件工程师 / ML 工程师。专门研究 Brain-Score&#xff08;一种衡量类脑 AI 的工具&#xff09;。他于 2021 年春季毕业于弗吉尼亚大学&#xff0c;获得计算机科学和应用数学学士学位&#xff0c;以…

【数字电路学习新助手】掌握电路仿真软件,开启数字电路知识的新篇章

在信息科技日新月异的今天&#xff0c;数字电路知识的重要性不言而喻。无论是通信工程、计算机科学与技术&#xff0c;还是电子信息技术等领域&#xff0c;数字电路都是基础中的基础。然而&#xff0c;对于初学者来说&#xff0c;数字电路的学习往往充满了挑战。幸运的是&#…

JUC 06 锁 开始

01.volatile 02.synchronized 03.lock

深入分析 Android ContentProvider (一)

文章目录 深入分析 Android ContentProvider (一)1. Android 中的 ContentProvider 设计说明1.1. ContentProvider 的设计初衷1.2. ContentProvider 的基本结构1.3. ContentProvider 的实现示例&#xff1a;实现一个简单的 ContentProvider 1.4. ContentProvider 的使用 2. Con…

小柴带你学AutoSar系列三、标准和规范篇(1)General

flechazo 小柴冲刺嵌入式系统设计师系列总目录 小柴带你学AutoSar总目录 缘起 一个小小的介绍啦&#xff0c;逐字逐句读规范。&#x1f61c; 不求能记住多少❤️ 只是希望将知识串起来&#xff0c;用到的时候能快速找到就好啦&#xff01; 一起学习AUTOSAR的规范吧 下面呢…

matlab中plot的一些用法

文章目录 一、基本用法二、绘制多个数据集三、设置线型、颜色四、添加标题和标签五、添加图例六、设置轴范围七、绘制网格八、 在同一图中绘制多个子图九、绘制带误差条的图十、绘制半对数图和对数图十一、绘制填充区域图十二、综合案例 一、基本用法 x 0:0.1:10; y sin(x);…

主流大数据调度工具DolphinScheduler之数据采集

今天继续给大家分享主流大数据调度工具DolphinScheduler&#xff0c;以及数据的ETL流程。 一&#xff1a;调度工具DS 主流大数据调度工具DolphinScheduler&#xff0c; 其定位&#xff1a;解决数据处理流程中错综复杂的依赖关系 任务支持类型&#xff1a;支持传统的shell任…

甲骨文闲置ARM实例防回收的方法

前几日挖了个大坑&#xff0c;今天补一下&#xff0c;谈谈甲骨文闲置实例如何防止回收。 回收原则 2022年11月16日 Oracle添加声明&#xff1a; 从 2022 年 11 月 24 日开始&#xff0c;您闲置的 Always Free 计算实例可能会停止。巴拉巴拉&#xff0c;您还可以随时升级您的帐…

Java数据结构(三)——顺序表

文章目录 顺序表前置知识ArrayList的构造ArrayList的常用方法ArrayList的遍历ArrayList的扩容机制ArrayList的模拟实现ArrayList的相关练习 顺序表 前置知识 顺序表是线性表的一种&#xff08;底层是数组&#xff09;&#xff0c;另一种是链表&#xff0c;说到线性表&#xf…

Three.JS飞入定位模型的位置。

源码 flyTo(object, gltfthis) {if (object undefined || object null) {return;}const box3 new THREE.Box3();box3.expandByObject(object); // 计算模型包围盒const size new THREE.Vector3();box3.getSize(size); // 计算包围盒尺寸const center new THREE.Vector3();…

【stm32项目】基于stm32智能宠物喂养(完整工程资料源码)

基于STM32宠物喂养系统 前言&#xff1a; 随着人们生活幸福指数的提高&#xff0c;越来越多的家庭选择养宠物来为生活增添乐趣。然而&#xff0c;由于工作等原因&#xff0c;许多主人无法及时为宠物提供充足的食物与水。为了解决这一问题&#xff0c;我设计了一款便捷的宠物喂…

如何搭建一个RADIUS服务器?

1. 系统环境 1.1.操作系统 Ubuntu-20.04.1 &#xff08;kernel: 5.15.0-58-generic&#xff09; 1.2.所需软件 FreeRADIUS MariaDB 1.3.注意事项 本文提到的所有操作&#xff0c;都是以root 身份执行&#xff1b; 2. FreeRADIUS的安装 2.1. 安装FreeRADIUS服务器程序 以…

fMATLAB中fill函数填充不同区域

只需获取填充区域的边缘信息&#xff0c;函数边缘越详细越好&#xff0c;然后调用fill函数。 fill函数能够根据指定的顶点坐标和填充颜色来绘制多边形或曲线形状&#xff0c;并在其内部填充指定的颜色。这使得在MATLAB中创建具有视觉吸引力的图形变得简单而高效。 fill函数的…

TCP滑动窗口和流量控制详解

1. 什么是滑动窗口 TCP 每发送⼀个数据&#xff0c;都需要⼀次应答&#xff0c;然后继续发送&#xff0c;这样为每个数据包都进⾏确认应答&#xff0c;缺点是&#xff1a;数据往返时间越⻓&#xff0c;⽹络吞吐量越低。为了解决这个问题&#xff0c;TCP 引⼊了 窗⼝ 这个概念。…

MISRA C2012学习笔记(7)-Rules 8.12

文章目录 8.12 表达式(Expressions)Rule 12.1 表达式中运算符的优先级应明确Rule 12.2 移位运算符的右操作数应在零到比左操作数基本类型的位宽度小一的范围内Rule 12.3 不得使用逗号(,)运算符Rule 12.4 常量表达式的求值不应导致无符号整数的回绕 8.12 表达式(Expressions) R…

Netty技术全解析:EventLoopGroup类详解

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…