Django cursor()增删改查和shell环境执行脚本

        在Django中,cursor()方法是DatabaseWrapper对象(由django.db.connectio提供)的一个方法,用于创建一个游标对象。这个游标对象可以用来执行SQL命令,从而实现对数据库的增删改查操作。

查询(Select)

        使用cursor.execute()方法执行SQL查询语句,可以获取数据库中的数据。查询your_table表中的所有记录。执行查询后,你可以使用cursor.fetchall()或cursor.fetchone()等方法来获取查询结果。

cursor.execute("SELECT * FROM your_table")

插入(Insert)

        使用cursor.execute()方法执行SQL插入语句,可以向数据库中添加新的记录。插入一条新记录。这里%s是占位符,execute()方法的第二个参数是一个列表,包含了要插入的值。

cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", [value1, value2])

更新(Update)

        使用cursor.execute()方法执行SQL更新语句,可以修改数据库中已存在的记录。例如,你可以使用来更新your_table表中id为某值的记录的column1字段。

cursor.execute("UPDATE your_table SET column1 = %s WHERE id = %s", [new_value, id])

删除(Delete)

使用cursor.execute()方法执行SQL删除语句,可以删除数据库中的记录。删除your_table表中id为某值的记录。

cursor.execute("DELETE FROM your_table WHERE id = %s", [id])

示例

1,添加模型

Test/app11/models.py

from django.db import modelsclass 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,shell 环境执行脚本

python manage.py shell

2.1 查询数据

fetchone() 方法 查询单行数据

# fetchall() 方法 查询单行数据
from django.db import connection# 使用cursor执行SQL查询
with connection.cursor() as cursor:cursor.execute("SELECT * FROM app11_post WHERE id = (%s)",['2'])row = cursor.fetchone()if row:print(f"Post with id 2: {row}")
else:print("No post found with id 2")

 fetchall() 方法 查询所有数据

# fetchall() 方法 查询所有数据
from django.db import connection
from datetime import datetime# 使用cursor执行SQL查询获取所有Post
with connection.cursor() as cursor:cursor.execute("SELECT id, title, content, pub_date FROM app11_post")rows = cursor.fetchall()for row in rows:print(row)print('\n')
# 使用cursor执行SQL查询获取所有Book
with connection.cursor() as cursor:cursor.execute("SELECT id, title, author, publication_date, price FROM app11_book")rows = cursor.fetchall()for row in rows:print(row)

2.2 插入数据

from django.db import connection
from datetime import datetime
import pytz# 使用cursor执行SQL查询插入数据
with connection.cursor() as cursor:# 如果你的Django项目启用了时区支持,确保你的datetime对象是带有时区信息的pub_date = datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC)# 对于Post模型cursor.execute("INSERT INTO app11_post (title, content, pub_date) VALUES (%s, %s, %s)",['My First Post1321', 'This is the content of my first post.', pub_date])# 对于Book模型cursor.execute("INSERT INTO app11_book (title, author, publication_date, price) VALUES (%s, %s, %s, %s)",['My First Book1321', 'John Doe', '2023-01-01', 19.99])

也可以用save()方法

# 插入数据
from datetime import datetime
import pytz
from app11.models import Post# 创建一个Post对象
post = Post(title='My First Post123', content='This is the content of my first post.123', pub_date=datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC))
# 保存到数据库
post.save()# 插入数据
from datetime import datetime
import pytz
from app11.models import Book# 创建一个Book对象
book = Book(title='My First Book123', author='John Doe123', publication_date=datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC), price=19.99)# 保存到数据库
book.save()

2.3 更新数据

# 更新数据
from django.db import connection# 新的title和content值
new_title = 'Updated Title123'
new_content = 'Updated Content123'# 使用cursor执行SQL查询更新数据
with connection.cursor() as cursor:cursor.execute("UPDATE app11_post SET title=%s, content=%s WHERE id=5",[new_title, new_content])from django.db import connection# 新的title和price值
new_title = 'Updated Book Title123'
new_price = 29.99# 使用cursor执行SQL查询更新数据
with connection.cursor() as cursor:cursor.execute("UPDATE app11_book SET title=%s, price=%s WHERE id=5",[new_title, new_price])

2.4 删除数据

from django.db import connection# 要删除的记录的id
post_id = 5# 使用cursor执行SQL查询删除数据
with connection.cursor() as cursor:cursor.execute("DELETE FROM app11_post WHERE id = %s",[post_id])from django.db import connection# 要删除的记录的id
book_id = 5# 使用cursor执行SQL查询删除数据
with connection.cursor() as cursor:cursor.execute("DELETE FROM app11_book WHERE id = %s",[book_id])

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

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

相关文章

设计分享—国外医疗行业界面设计

医疗诊断界面是一个直观且信息丰富的数字平台,它集成了患者基本信息、病史记录、当前症状描述、检查结果展示以及智能诊断建议等功能于一体。 界面设计简洁明了,便于医生快速浏览关键信息,同时利用先进的算法辅助医生进行精准诊断&#xff0…

鸿蒙系统(java方法以及数据结构)

在java中数据结构是以类和对象的形式实现的,常见的数据结构及其简单实现 1.数组(Array) 2.链表(Linked List) 3.栈(Stack) 4.队列(Queue) 5.哈希表(Hash…

elasticsearch8.14.1集群安装部署

elasticsearch安装部署,首先需要准备至少三台服务器,本例再windows11下安装三台vmware虚拟机,利用centOS7系统模拟服务器环境。 本例假设你已经安装了三台vmware和centOS7,且centOS7运行正常。接下来我们直接讲解elasticsearch下载…

Linux(linux命令)和Window(powershell)的查找命令

目录 LinuxWindow基本操作(1)Get-ChildItem(2)Get-ChildItem模糊查找1. 使用星号(*)通配符(常用)1、第一个命令:使用 `-Filter` 参数(常用)2、第二个命令:使用管道和 `Where-Object`3、差异2. 使用问号(?)通配符(不常用)3. 结合使用星号和问号(不常用)4. 使…

3GPP R18 Multi-USIM是怎么回事?(四)

前几篇主要是MUSIM feature NAS 部分内容的总结,这篇开始看RRC部分相关的内容,由于RRC部分内容过长,也分成了2篇。这篇就着重看下musim gap以及RRC触发UE离开RRC Connected mode相关的内容,直入正题, 上面的内容在overview中有提到,对应的是如下38.300中的描述。 处于网络…

【python 已解决】ZeroDivisionError: division by zero —— 深度解析与解决策略

【python 已解决】ZeroDivisionError: division by zero —— 深度解析与解决策略 在编程过程中,尤其是使用Python这类高级编程语言时,ZeroDivisionError是一个常见的运行时错误。这个错误发生时,意味着你的代码中尝试进行了除以零的操作&am…

【深度学习】yolov8-seg分割训练,拼接图的分割复原

文章目录 项目背景造数据训练 项目背景 在日常开发中,经常会遇到一些图片是由多个图片拼接来的,如下图就是三个图片横向拼接来的。是否可以利用yolov8-seg模型来识别出这张图片的三张子图区域呢,这是文本要做的事情。 造数据 假设拼接方式有…

wireshark过滤器,如何使用wireshark捕获指定域名的流量

过滤器比较高级,但是也很重要,我决定通过一个案例来学习过滤器的知识点。 比如,我现在访问 zhangdapeng.com 我希望能够捕获关于这个域名下的流量,该如何实现呢? 我选择了捕获以太网的流量,但是目前捕获到…

【Linux】从零开始认识多线程 --- 线程ID

在这个浮躁的时代 只有自律的人才能脱颖而出 -- 《觉醒年代》 1 前言 上一篇文章中讲解了线程控制的基本接口: 线程创建pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);: pthread_t *thread :输出…

43 华三AC登录Web页面

一 无线上WEB页面 1 创建vlan 56 [AC-KongZhi]vlan 56 2 退出 [AC-KongZhi-vlan56]quit 3 进入vlan三层口 配置IP地址 [AC-KongZhi]interface Vlan-interface 56 [AC-KongZhi-Vlan-interface56]ip address 192.168.56.55 24 4 在AC控制器与Host主机的接口上能通关vlan 5…

MySQL进阶之(十)事务和隔离级别

十、事务和隔离级别 10.1 事务10.1.1 事务介绍10.1.2 事务四大特性10.1.3 事务的状态10.1.4 如何使用事务01、事务控制语句02、事务操作 10.2 事务的隔离级别10.2.1 事务数据可见性和并发问题01、脏写(Dirty Write)/更新丢失02、脏读(Dirty R…

Python怎样读取URL生成PDF

1. 安装依赖的exe 需要在这个网址,安装一个exe包,地址:https://wkhtmltopdf.org/ 进入网址后,点这个位置: 选择一个你的操作系统的下载链接: 安装后的exe文件: C:\Program Files\wkhtmltopdf…

分布式服务框架zookeeper+消息队列kafka

一、zookeeper概述 zookeeper是一个分布式服务框架,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:命名服务,状态同步,配置中心,集群管理等。 在分布式环境下,经常需要对应用/服…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十四章 注册字符设备号

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

硅谷裸机云大宽带服务器连接不上是怎么回事?该如何处理

硅谷裸机云大宽带服务器连接不上的常见原因主要有网络设置、网络设备、服务端、软件和服务、物理层等,出现以上问题,RAK部落小编建议大家可以通过以下一系列的方法进行排查和解决。具体分析如下: 1.检查网络设置   核对配置信息&#xff1a…

微信小程序-CANVAS写入图片素材、文字等数据生成图片

微信小程序中,CANVAS写入图片素材、文字等数据生成图片,最终可将生成的 base64 格式图片保存至相册操作 Tips: 1、canvas 标签默认宽度 300px、高度 150px canvas 生成图片时,写入图片素材、文字等数据前,需要根据实…

LangChain的使用详解

一、 概念介绍 1.1 Langchain 是什么? 官方定义是:LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序,它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供…

nfs和web服务器的搭建

(一)web服务器的搭建 1.配置基本环境 要点有,yum源,包含nginx和阿里云(或者腾讯云或者华为云),这里的相关知识可以参考之前的yum配置笔记 2.安装nginx yum -y install nginx 3.验证并且开启服…

VS Code 配置 C/C++ 编程运行环境(保姆级教程)

文章目录 一、软件下载1. 下载 VS Code 安装工具 2. 下载 MinGW-W64二、安装 VS Code三、安装 MinGW-W64 及配置环境变量四、配置 VS Code 的 C/C 编程运行环境1. 汉化 VS Code(选做)2. 安装 C/C 扩展包 五、测试 VS Code 的 C/C 编程环境1. 创建代码文件…

C++学习笔记01-语法基础(问题-解答自查版)

前言 以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。 本文对读者可以用作自查,答案在后面&#xff0…