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.mzph.cn/web/47873.shtml

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

相关文章

四、GD32 MCU 常见外设介绍 (4) EXTI 中断介绍

4.EXTI 中断介绍 EXTI(中断/事件控制器)包含多个相互独立的边沿检测电路并且能够向处理器内核产生中断请求或唤醒事件。 EXTI 有三种触发类型:上升沿触发、下降沿触发和任意沿触发。 EXTI中的每一个边沿检测电路都可以独立配置和屏蔽。 4.1.GD32 EXTI 外设原理简介…

自动驾驶---视觉Transformer的应用

1 背景 在过去的几年,随着自动驾驶技术的不断发展,神经网络逐渐进入人们的视野。Transformer的应用也越来越广泛,逐步走向自动驾驶技术的前沿。笔者也在博客《人工智能---什么是Transformer?》中大概介绍了Transformer的一些内容&#xff1a…

setsockopt选项对tcp速度

GPT-4 (OpenAI) 每个setsockopt调用都涉及到一个套接字描述符,一个指定网络层的常数(如IPPROTO_IP, IPPROTO_TCP, IPPROTO_IPV6, SOL_SOCKET等),一个指定需配置的选项的常数,一个指向配置值的指针,以及那个…

时钟芯片LMK04828调试记录

平台:vivado2018.3 芯片:LMK04828 应用场景:在一些高速ADC和DAC的芯片中,需要时钟芯片对其提供专用的高速时钟,并且往往伴随这jesd204b的时钟产生。所以使用时钟芯片来产生同源时钟。 官方手册下载地址 LMK04828 数…

粘包问题、mmap和分片上传

一、粘包问题: 如果一端要把文件发给另一端,要发送两个部分的数据:其一是文件名,用于对端创建文件;另一个部分是文件内容。服务端在接收文件名,实际上并不知道有多长, 所以它会试图把网络缓冲区…

Anaconda下安装配置Jupyter

Anaconda下安装配置Jupyter 1、安装 conda activate my_env #激活虚拟环境 pip install jupyter #安装 jupyter notebook --generate-config #生成配置文件提示配置文件的位置: Writing default config to: /root/.jupyter/jupyter_notebook_config.py检查版本&am…

android studio中svn的使用

第一步,建立一个项目。 第二步,share project。 第三步,选择存放的位置,然后添加提交信息,最后点击share。这样就可以在svn上面看到一个空的项目名称。 第四步,看到文件变成了绿色,点击commit图…

来聊聊redis集群数据迁移

写在文章开头 本文将是笔者对于redis源码分析的一个阶段的最后一篇,将从源码分析的角度让读者深入了解redis节点迁移的工作流程,希望对你有帮助。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CS…

华为OD机考题(HJ61 放苹果)

前言 经过前期的数据结构和算法学习,开始以OD机考题作为练习题,继续加强下熟练程度。 描述 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? 注意:如果有7个苹果和3…

C语言 | Leetcode C语言题解之第275题H指数II

题目&#xff1a; 题解&#xff1a; int hIndex(int* citations, int citationsSize) {int left 0, right citationsSize - 1;while (left < right) {int mid left (right - left) / 2;if (citations[mid] > citationsSize - mid) {right mid - 1;} else {left mi…

Java 中的线程

创建线程的三种方式 方式一&#xff1a;继承Thread类 实现步骤&#xff1a; 继承Thread类并重写run()方法&#xff1b; 创建线程并启动。 代码实现&#xff1a; public class MyThread extends Thread {Overridepublic void run() {for(int i0; i<100; i) {System.out…

DB-GPT:LLM应用的集大成者

整体架构 架构解读 可以看到&#xff0c;DB-GPT把架构抽象为7层&#xff0c;自下而上分别为&#xff1a; 运行环境&#xff1a;支持本地/云端&单机/分布式等部署方式。顺便一提&#xff0c;RAY是蚂蚁深度参与的一个开源项目&#xff0c;所以对RAY功能的支持应该非常完善。…

Vue自定义指令与Vue插槽学习

文章目录 自定义指令1.指令介绍2.自定义指令3.自定义指令语法4.指令中的配置项 自定义指令-指令的值1.使用效果2.语法 插槽-默认插槽1.作用2.用处4.插槽的基本语法 插槽-具名插槽1.作用2.具名插槽语法3.v-slot的简写 插槽总结1.插槽分类2.作用3.场景4.使用步骤 自定义指令 1.指…

实现Nginx的反向代理和负载均衡

一、反向代理和负载均衡简介 1.1、反向代理 反向代理(reverse proxy)指:以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端。此时代理服务器对外就表现为一个反向代理服务器。 反向代…

【Android Compose】ListView效果

【Android Compose】ListView效果 1、Column、Row 和 Box2、LazyColumn和LazyRow3、Compose 中的状态4、ListView效果5、android-compose-codelabs Jetpack Compose 使用入门 Jetpack Compose 教程 Jetpack Compose 1、Column、Row 和 Box Compose 中的三个基本标准布局元素是 …

算法day05 master公式估算递归时间复杂度 归并排序 小和问题 堆排序

2.认识O(NlogN)的排序_哔哩哔哩_bilibili master公式 有这样一个数组&#xff1a;【0&#xff0c;4&#xff0c;2&#xff0c;3&#xff0c;3&#xff0c;1&#xff0c;2】&#xff1b;假设实现了这样一个sort()排序方法&#xff0c; 将数组二分成左右两等分&#xff0c;使用so…

linux、windows、macos,命令终端清屏

文章目录 LinuxWindowsmacOS 在Linux、Windows和macOS的命令终端中&#xff0c;清屏的命令或方法各不相同。以下是针对这三种系统的清屏方法&#xff1a; Linux clear命令&#xff1a;这是最常用的清空终端屏幕的命令之一。在终端中输入clear命令后&#xff0c;屏幕上的所有内容…

【计算机网络】TCP/IP——流量控制与拥塞控制

学习日期&#xff1a;2024.7.22 内容摘要&#xff1a;TCP的流量控制与拥塞控制 流量控制 一般来说&#xff0c;我们总是希望数据传输的快一些&#xff0c;但是如果数据传输的太快&#xff0c;接收方可能就来不及接收&#xff0c;这就会导致数据的丢失&#xff0c;流量控制正是…

Vue中渲染函数

why? 在绝大多数情况下&#xff0c;Vue 推荐使用模板语法来创建应用。然而在某些使用场景下&#xff0c;我们真的需要用到 JavaScript 完全的编程能力。这时渲染函数就派上用场了。 例如&#xff1a;下方要在多个模型上方设置对话框&#xff0c;如果使用Vue模板语法相对较困难…

小技巧:如何在已知PDF密码情况下去掉PDF的密码保护

第一步&#xff0c;用Edge打开你的pdf&#xff0c;输入密码进去 第二步&#xff0c;点击打印 第三步&#xff0c;选择导出PDF&#xff0c;选择彩印 第四步&#xff0c;选择导出位置&#xff0c;导出成功后打开发现没有密码限制了&#xff01;