当前位置: 首页 > news >正文

PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获

目录

一、数据库操作应用场景

二、安装PyMysql

三、事务的概念

四、数据库的准备

五、PyMysql连接数据库

1、建立连接方法 

2、入门案例

六、PyMysql操作数据库

1、数据库查询

1️⃣查询操作流程

2️⃣cursor游标

​3️⃣查询常用方法

4️⃣案例

5️⃣异常捕获

2、数据库UID

1️⃣更新操作流程

2️⃣案例:增删改操作


一、数据库操作应用场景

1、校验测试数据

  • 接口发送请求后明确会对数据库中的某个字段进行修改,但响应结果中无该字段数据时。

            ⚪如ihrm 删除员工接口。 is_delete 字段没有在响应结果中出现! 需要借助数据库校验!

2、构造测试数据

  • 测试数据使用一次就失效。

            ⚪如:ihrm 添加员工接口,使用的手机号!

  • 测试前,无法保证测试数据是否存在。

            ⚪如:ihrm 查询员工接口,使用的员工id

二、安装PyMysql

pip install PyMySQL -i https://pypi.douban.com/simple/

操作步骤

1. 导包 import pymysql

2. 创建连接。 conn = pymysql.connect(host,port, user, password, database, charset)

3. 获取游标。 cursor = conn.cursor()

4. 执行 SQL。 cursor.execute( ”sql语句“ )

        查询语句(select)

                处理结果集(提取数据:fetch*)

        增删改语句(insert、update、delete)

                成功:提交事务 conn.commit()

                失败:回滚事务 conn.rollback()

5. 关闭游标。cursor.close()

6. 关闭连接。conn.close()

三、事务的概念

更详细的介绍:MySQL数据库04|内置函数、存储过程、视图、事务、索引-CSDN博客 

  • 事务,是关系型数据库(mysql)特有的概念。
  • 事务,可以看做一个虚拟的容器,在容器中存放一系列的数据库操作,看做一个整体。内部的所有操作,要 么都一次性全部成功,只要有一个失败,就全部失败!
  • 事务操作:只有 2 种情况

            ⚪提交:conn.commit()

            ⚪回滚: conn.rollback()

四、数据库的准备

参考资料:

博客资料:看第一部分中的SQL演练文章浏览阅读2.8k次,点赞2次,收藏21次。文章目录前言# 第一部分:数据库练习准备数据创建数据表插入数据SQL演练1. SQL语句的强化2. 创建"商品分类"表3. 同步表数据4. 创建“商品品牌表”表5. 同步数据6. 修改表结构7. 外键外键取消外键:其实在设计定义数据库的时候,就已经确定了要不要使用外键:比如下面的逻辑。8. 其实就是多创建一个表,然后从原来的表上使用外键进行关联:下面代码可以一次性复制粘贴进行联系# 第二部分:Python 操作 MySQL1. 初尝python与mysql交互2. pymysql查询数据库、面向对象3. p_python mysql数据库练习https://blog.csdn.net/haojie_duan/article/details/122760852

github代码:看第7部分的2和3MySQL学习. Contribute to wmh02240/MySQL-Notes development by creating an account on GitHub.icon-default.png?t=O83Ahttps://github.com/wmh02240/MySQL-Notes/tree/master/MySQL%E5%9F%BA%E7%A1%80/7.MySQL%E4%B8%8EPython%E4%BA%A4%E4%BA%92

视频资料:【数据库查询】11-数据库设计_哔哩哔哩_bilibili【数据库查询】11-数据库设计是【python教程】MySQL数据库的第20集视频,该合集共计36集,视频收藏或关注UP主,及时了解更多相关视频内容。icon-default.png?t=O83Ahttps://www.bilibili.com/video/av56919275?vd_source=6069c4cff3b2c943460de92f0c37ea38&spm_id_from=333.788.videopod.episodes&p=20

五、PyMysql连接数据库

1、建立连接方法 

conn = pymysql.connect(host="", port=0,

                                        user="", password="", database="", charset="")

host:数据库所在主机 IP地址 - string

port:数据库使用的 端口号 - int

user:连接数据库使用的 用户名 - string

password:连接数据库使用的 密码 - string

database:要连接的那个数据库的名字 - string

charset:字符集。常用 utf8 - string

conn:连接数据库的对 象。

2、入门案例

查询数据库,获取MySQL服务器 版本信息

# 1. 导包
import pymysql# 2. 建立连接
conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")# 3. 获取游标
cursor = conn.cursor()# 4. 执行 sql 语句(查询)
cursor.execute("select version()")# 5. 获取结果
res = cursor.fetchone()
print("res =", res[0])# 6. 关闭游标
cursor.close()# 7. 关闭连接
conn.close()

六、PyMysql操作数据库

  • 查询语法
select 字段1,字段2,... from 表 where 条件;示例:select id,title, pub_date from t_book where title = '读者';
  • 添加语法
insert into 表名(字段1, 字段2, ...) values(值1, 值2, ...);示例:insert into t_book(id, title, pub_date) values(17, '红楼梦', '2021-11-11');
  • 更新语法
update 表名 set 字段名 = 字段值 where 条件示例:update t_book set title = '三国' where id = 17;
  • 删除语法
delete from 表名 where 条件示例:delete from t_book where title = '三国';

1、数据库查询

1️⃣查询操作流程

2️⃣cursor游标
3️⃣查询常用方法
  • fetchone():从结果集中,提取一行。
  • fetchmany(size):从结果集中,提取 size 行。
  • fetchall():提取所有结果集。

以上三个方法取得的结果都和游标的位置有关,都是从游标的下一个位置开始提取行。 

  • 属性rownumber:可以设置游标位置。想让游标回到起始位置的话,设置其为0即可。
4️⃣案例

查询goods表,获取第一条数据

查询goods表,获取前两条数据

查询goods表,获取全部数据

查询goods表,获取第3条和第4条 数据

# 1. 导包
import pymysql# 2. 建立连接
conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")# 3. 获取游标
cursor = conn.cursor() # 指向 0 号位置。# 4. 执行 sql 语句(查询)--- goods
cursor.execute("select * from goods;")# 5. 获取结果 - 提取第一条
res1 = cursor.fetchone()
print("res1 =", res1)# 修改游标位置:回零
cursor.rownumber = 0
# 5. 获取结果 - 提取前 2 条
res2 = cursor.fetchmany(2)
print("res2 =", res2)# 修改游标位置:回零
cursor.rownumber = 0
res3 = cursor.fetchall()
print("res3 =", res3)# 修改游标位置:指向第 2 条记录
cursor.rownumber = 2
res4 = cursor.fetchmany(2)
print("res4 =", res4)# 6. 关闭游标
cursor.close()# 7. 关闭连接
conn.close()
5️⃣异常捕获
try:尝试执行的代码
except Exception as err:有错误出现时,执行的代码
finally:无论有没有错误,都会执行的代码

# 1. 导包
import pymysql# 定义全局变量,初值为 None
conn = None
cursor = Nonetry:# 2. 建立连接conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")# 3. 获取游标cursor = conn.cursor() # 指向 0 号位置。# 4. 执行 sql 语句(查询)--- goodscursor.execute("select * from goods;")# 5. 获取结果 - 提取第一条res1 = cursor.fetchone()print("res1 =", res1)# 修改游标位置:回零cursor.rownumber = 0# 5. 获取结果 - 提取前 2 条res2 = cursor.fetchmany(2)print("res2 =", res2)# 修改游标位置:回零cursor.rownumber = 0res3 = cursor.fetchall()print("res3 =", res3)# 修改游标位置:指向第 2 条记录cursor.rownumber = 2res4 = cursor.fetchmany(2)print("res4 =", res4)except Exception as err:print("查询语句执行出错:", str(err))finally:# 6. 关闭游标cursor.close()# 7. 关闭连接conn.close()

2、数据库UID

1️⃣更新操作流程

2️⃣案例:增删改操作

单独实现如下操作:

①:新增一条商品数据

②:把商品id为22的商品名称name改为“修改后修改后xxxxx”

③:删除商品id为22的商品

【补充】pymysql中,事务的开始通常是隐式的。也就是说,当你第一次执行 INSERTUPDATEDELETE 等操作时,数据库会自动为你启动一个事务,而你不需要显式调用 begin 来开始事务。 

插入数据:

"""
新增一条商品数据
insert into goods values (0,'测试测试测试英寸笔记本',1,1,'2999',default,default);
【注意】插入的第3和4列数据有外键约束,必须得是有效的数据,能和另一个表的主键对应上
1. 导包
2. 创建连接
3. 获取游标
4. 执行 insert 语句
5. 提交/回滚事务
6. 关闭游标
7. 关闭连接
"""# 1. 导包
import pymysql# 定义全局变量
conn = None
cursor = Nonetry:    # 2. 创建连接    conn=pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")    # 3. 获取游标    cursor = conn.cursor()# 4. 执行 insert 语句cursor.execute("insert into goods values (0,'测试测试测试英寸笔记本',1,1,'2999',default,default);")# 查看 sql执行,影响多少行    print("影响的行数:", conn.affected_rows())# 5. 提交事务    conn.commit()except Exception as err:    print("插入数据错误:", str(err))   # 回滚事务    conn.rollback()finally:    # 6. 关闭游标    cursor.close()    # 7. 关闭连接    conn.close()

修改数据:

 """
把商品id为22的商品名称name改为“修改后修改后xxxxx”
update goods set name='修改后修改后英寸笔记本' where id=22;1. 导包
2. 建立连接
3. 获取游标
4. 执行 update语句
5. 提交、回滚事务
6. 关闭游标
7. 关闭连接
"""import pymysqlconn = None
cursor = None
try:conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")cursor = conn.cursor()cursor.execute("update goods set name='修改后修改后英寸笔记本' where id=22;")print("影响的行数:",conn.affected_rows())conn.commit()except Exception as err:print("修改数据操作出错:",str(err))conn.rollback()finally:cursor.close()conn.close()

删除数据:

 """
删除id为22的商品信息
delete from goods where id=22;1. 导包
2. 建立连接
3. 获取游标
4. 执行 delete 语句
5. 提交、回滚事务
6. 关闭游标
7. 关闭连接
"""import pymysqlconn = None
cursor = None
try:conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")cursor = conn.cursor()cursor.execute("delete from goods where id=22;")print("影响的行数:",conn.affected_rows())conn.commit()except Exception as err:print("删除数据操作出错:",str(err))conn.rollback()finally:cursor.close()conn.close()

全部内容:

PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获-CSDN博客

PyMysql 01|(包含超详细项目实战)数据库工具类封装-CSDN博客 

相关文章:

PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获

目录 一、数据库操作应用场景 二、安装PyMysql 三、事务的概念 四、数据库的准备 五、PyMysql连接数据库 1、建立连接方法 2、入门案例 六、PyMysql操作数据库 1、数据库查询 1️⃣查询操作流程 2️⃣cursor游标 ​3️⃣查询常用方法 4️⃣案例 5️⃣异常捕获 …...

Android14上使用libgpiod[gpioinfo gpioget gpioset ...]

环境 $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.5 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.5 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="…...

网络安全 信息收集入门

1.信息收集定义 信息收集是指收集有关目标应用程序和系统的相关信息。这些信息可以帮助攻击者了解目标系统的架构、技术实现细节、运行环境、网络拓扑结构、安全措施等方面的信息,以便我们在后续的渗透过程更好的进行。 2.收集方式-主动和被动收集 ①收集方式不同…...

修改sshd默认配置,提升安全

对于Linux服务器,特别是暴露在公网的服务器,会经常被人扫描、探测和攻击。包括通过ssh访问登录攻击。对此,对默认的sshd配置进行调整,提升安全。 下面以CentOS 7.9为例说明: 一、常见安全措施 以root用户编辑vim /e…...

Clojure语言的面向对象编程

Clojure语言的面向对象编程 引言 Clojure是一种现代的Lisp方言,它特别强调函数式编程,Immutable数据结构和强大的并发能力。然而,很多人可能会问:Clojure支持面向对象编程吗?虽然Clojure没有像Java或C那样的传统类和…...

spring boot启动源码分析(三)之Environment准备

上一篇《spring-boot启动源码分析(二)之SpringApplicationRunListener》 环境介绍: spring boot版本:2.7.18 主要starter:spring-boot-starter-web 本篇开始讲启动过程中Environment环境准备,Environment是管理所有…...

MySQL复习

基础篇 InnoDB、MyISAM 和 MEMORY 存储引擎的区别? 主要区别: 为什么MySQL选择 InnoDB 作为默认存储引擎? 1.innodb支持事务,myisam、memory不支持。 2.innodb支持行级锁,可以使多个事务同时访问不同的行&#xf…...

ASP.NET Core 实现微服务 -- Polly 服务降级熔断

在我们实施微服务之后,服务间的调用变的异常频繁。多个服务之间可能是互相依赖的关系。某个服务出现故障或者是服务间的网络出现故障都会造成服务调用的失败,进而影响到某个业务服务处理失败。某一个服务调用失败轻则造成当前相关业务无法处理&#xff1…...

服务器漏洞修复解决方案

漏洞1、远程桌面授权服务启用检测【原理扫描】 Windows Remote Desktop Licensing Service is running: Get Server version: 0x60000604 1、解决方案:建议禁用相关服务避免目标被利用 方法一:使用服务管理器 打开“运行”对话框(WinR&am…...

“AI智慧组卷系统:让考试变得更简单、更公平!

大家好,我是一名资深的产品经理,今天咱们就来聊聊教育领域的一款黑科技产品——AI智慧组卷系统。在这个信息技术飞速发展的时代,AI技术已经渗透到了我们生活的方方面面,教育行业也不例外。下面我就用大白话给大家介绍一下这个AI智…...

MT6706BL 同步整流 规格书

MT6706BL 是用于反激式变换器的高性能 65V 同步整流器。MT6706BL兼容各种反激转换器类型。MT6706BL 支持 DCM、CCM 和准谐振模式。MT6706BL 集 成 了 一 个 65V 功 率MOSFET&#xff0c;可以取代肖特基二极管&#xff0c;提高效率。V SW <V TH-ON 时&#xff0c;MT6706BL 内…...

vue el-table 数据变化后,高度渲染问题

场景&#xff1a;el-table设置了height属性&#xff0c;但是切换查询条件后再次点击查询重新获取data时&#xff0c;el-table渲染的高度会有问题&#xff0c;滚动区域变矮了。 解决办法&#xff1a;使用doLayout方法‌&#xff0c;在表格数据渲染后调用doLayout方法可以重新布局…...

前端多语言

前端多语言目前常用i18n实现 一、react 1.安装依赖 npm install react-i18next i18next --save2.创建配置文件 src/i18n config.ts&#xff1a;对 i18n 进行初始化操作及插件配置 en.json&#xff1a;英文语言配置文件 zh.json&#xff1a;中文语言配置文件 config.ts im…...

人工智能-机器学习之多元线性回归(项目实践一)

目标&#xff1a;运用scikit-learn进行多元线性回归方程的构建&#xff0c;通过实际案例的训练集和测试集进行预测&#xff0c;最终通过预测结果和MSE来评估预测的精度。 一、首先安装scikit-learn&#xff1a;pip install scikit-learn C:\Users\CMCC\PycharmProjects\AiPro…...

后台定时查杀进程策略

2019年做的一个500元价位内手机后台定时查杀的功能策略&#xff0c;现在2025年了回过头看&#xff0c;确实已经不适用了。现在进程管控大部分是不杀进程的方式了&#xff0c;类似冻结(类似苹果的墓碑机制)&#xff0c;而杀进程策略主要是场景式异常查杀了&#xff0c;例如明显性…...

Objective-C语言的学习路线

Objective-C语言的学习路线 在程序开发的历史长河中&#xff0c;Objective-C作为一种继承自C语言与Smalltalk的编程语言&#xff0c;扮演着重要的角色。虽然随着Swift语言的出现&#xff0c;Objective-C的使用有所减少&#xff0c;但它依然是iOS和macOS应用开发的重要基础&…...

宁德时代2025年Verify入职测评语言理解及数字推理真题SHL题库汇总、考情分析

宁德时代社招Verify入职测评对薪酬有着重要影响&#xff0c;其规定正确率达到80%才能顺利通过测评。这体现了公司对人才专业素养与能力的严格要求&#xff0c;旨在筛选出真正符合岗位需求的优秀人才。测评内容涵盖了专业知识、技能运用、逻辑思维等多方面&#xff0c;只有综合能…...

【Spring】注入方式

介绍 在Spring框架中&#xff0c;依赖注入&#xff08;Dependency Injection, DI&#xff09;是实现控制反转&#xff08;Inversion of Control, IoC&#xff09;的核心机制。 除了通过XML配置的注入方式&#xff08;已逐渐被淘汰&#xff09;&#xff0c;Spring还支持多种基…...

Python 中的作用域:规则与应用

在 Python 编程中&#xff0c;作用域&#xff08;Scope&#xff09; 是指一个变量可以被访问和引用的范围。作用域与变量的生命周期密切相关&#xff0c;决定了变量何时被创建、何时被销毁以及在哪些地方可以使用它。理解作用域对于编写清晰、可维护的代码至关重要。 Python 中…...

T-SQL语言的字符串处理

T-SQL语言的字符串处理 引言 在数据库管理和应用开发中&#xff0c;我们经常需要对字符串进行处理。字符串的处理包括查找、替换、分割、拼接以及格式化等操作&#xff0c;而这些操作在SQL Server中可以通过T-SQL&#xff08;Transact-SQL&#xff09;来实现。T-SQL是微软SQL…...

UART 入门指南(Linux新手版)

UART 入门指南&#xff08;Linux新手版&#xff09; 适用对象&#xff1a;嵌入式/电子/通信初学者 目录 什么是 UARTUART 工作原理硬件接口与接线通信参数详解编程示例常见问题与调试 1. 什么是UART 1.1 基本定义 UART 的全称是 Universal Asynchronous Receiver/Transmitte…...

LingBot-Depth应用案例:智能机器人视觉感知的深度修复实战

LingBot-Depth应用案例&#xff1a;智能机器人视觉感知的深度修复实战 1. 引言&#xff1a;当机器人遇到"视觉障碍" 想象一下&#xff0c;你家的扫地机器人正在客厅工作&#xff0c;突然在玻璃茶几前停了下来——因为它"看"不到透明的玻璃表面。或者一个…...

微信聊天记录导出恢复/备份/离线查看工具(支持最新版4.1及以上)

微信聊天记录在电脑中加密存储&#xff0c;官方并未提供直接导出功能。 本软件可将电脑版微信的全部聊天内容批量导出&#xff0c;方便备份存档&#xff0c;即使后期不登录微信&#xff0c;也能快速查阅历史记录。 支持最新版电脑微信4.1.x及以上。 软件还支持尝试恢复已删除…...

【Matter】Ubuntu 22.04下chip-tool编译实战:避坑指南与代理配置详解

1. Ubuntu 22.04环境准备与基础配置 在开始编译Matter的chip-tool之前&#xff0c;我们需要先准备好Ubuntu 22.04的开发环境。这个环节虽然基础&#xff0c;但往往决定了后续编译过程的顺利程度。我曾在多个项目中验证过&#xff0c;一个干净的Ubuntu 22.04系统是最稳定的编译环…...

告别虚拟机:在Mac/Windows本地用Docker快速拉起StarRocks测试环境

告别虚拟机&#xff1a;在Mac/Windows本地用Docker快速拉起StarRocks测试环境 当我们需要快速验证一个数据库的功能特性时&#xff0c;传统方式往往需要在虚拟机或物理机上经历繁琐的安装配置过程。对于StarRocks这样的分布式分析型数据库&#xff0c;传统部署方式更是需要准备…...

高性能数据库集群

近年来各种存储技术飞速发展&#xff0c;但关系数据库由于其 ACID 的特性和功能强大的 SQL 查询&#xff0c;目前还是各种业务系统中关键和核心的存储系统&#xff0c;很多场景下高性能的设计最核心的部分就是关系数据库的设计。 不管是为了满足业务发展的需要&#xff0c;还是…...

别再纠结了!手把手教你用FreeSWITCH 1.10 + Verto模块搭建WebRTC智能外呼系统(含完整配置文件)

WebRTC智能外呼实战&#xff1a;基于FreeSWITCH与Verto的高效解决方案 在数字化转型浪潮中&#xff0c;企业通信系统正经历从传统电话向互联网融合的深刻变革。我曾为多家金融机构和电商平台设计过智能外呼系统&#xff0c;发现一个共性痛点&#xff1a;如何在不依赖客户端安装…...

Win11Debloat:Windows 11终极优化指南 - 让系统运行如飞的完整教程

Win11Debloat&#xff1a;Windows 11终极优化指南 - 让系统运行如飞的完整教程 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to decl…...

STM32实战:S曲线加减速算法在步进电机控制中的实现与调优

1. 为什么需要S曲线加减速控制 我第一次用步进电机做3D打印机时&#xff0c;电机启动瞬间总会发出刺耳的"咔咔"声&#xff0c;打印头也会轻微抖动。后来发现这是典型的梯形加减速带来的冲击问题——速度突变导致电机扭矩不足。而S曲线加减速就像老司机踩油门&#x…...

快速原型:用快马AI十分钟搭建clawhub skill技能分享平台Demo

最近在尝试做一个技能分享平台的原型&#xff0c;正好用InsCode(快马)平台快速搭建了一个clawhub skill的demo。整个过程比想象中顺利很多&#xff0c;特别适合需要快速验证产品想法的时候使用。 用户系统搭建 从最基础的注册登录开始&#xff0c;用平台内置的模板快速生成了表…...