news 2026/5/19 23:29:21

【接口测试】4_PyMySQL模块 _操作数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【接口测试】4_PyMySQL模块 _操作数据库

文章目录

  • 一、SQL 语法回顾
  • 二、select-查询数据(重点)
    • 2.1 查询操作步骤
    • 2.2 cursor游标
      • 2.2.1 cusor对象的fetch*()方法
      • 2.2.2 cusor对象的fetch*()方法的原理
    • 2.3 查询案例
  • 三、异常捕获
    • 3.1 语法
    • 3.2 案例
  • 四、增删改-数据(重点)
    • 4.1 增删改操作步骤
    • 4.2 案例
      • 4.2.1 insert插入
      • 4.2.2 update修改
      • 4.2.3 delete删除
  • 五、反引号
  • 六、小结

一、SQL 语法回顾

  • 查询语法:
select*from表名where过滤条件;select字段名1,字段名2...from表名where过滤条件;
  • 添加语法:
insertinto表名 字段名=字段值;
  • 更新语法:
update 表名set字段名=字段值 where 过滤条件;
  • 删除语法:
deletefrom表名 where 过滤条件;

二、select-查询数据(重点)

2.1 查询操作步骤

2.2 cursor游标

  • 游标,负责提取结果集中的数据。
  • 新创建的游标,指向结果集 0 条记录
  • 游标提取数据的方式,提取游标当前指向位置的 下一条记录。
  • 每提取一条记录成功,游标会自动向下游动

2.2.1 cusor对象的fetch*()方法

# 返回值,元祖数据cursor.fetchone()# 从结果集中,提取一条记录。# 返回值,((),(),···)cursor.fetchmany(size)# 从结果集中,提取 size 条记录。# 返回值,((),(),···)cursor.fetchall()# 提取结果集的 全部数据。

2.2.2 cusor对象的fetch*()方法的原理

1、游标属性 rownumber:标识游标的当前位置(默认初始位置从0开始) 。

  • 常常用来归零。cursor.rownumber = 0

2、cursor.fetch*()方法,是基于游标当前位置逐行向下获取数据

2.3 查询案例

要求:分析::查询t_book表的全部字段数据1)select*fromt_book ②:获取查询结果集的第一条数据2)cursor.rownumber=0cursor.fetchone():获取查询结果集的第3条和第4条数据3)cursor.rownumber=2cursor.fetchmany(2):获取全部的查询结果集及总记录数4)cursor.rownumber=0cursor.fetchall()

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

查询t_book表,获取 全部 数据

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

""" 查询t_book表,获取 第一条 数据 查询t_book表,获取 全部 数据 查询t_book表,获取 第3条和第4条 数据 """# 导包importpymysql# 创建连接conn=pymysql.connect(host="211.103.136.244",port=7061,user="student",password="123456",database="test_db",charset="utf8")# 创建游标, 指向 0号 记录my_cursor=conn.cursor()# 执行 select sqlmy_cursor.execute("select * from t_book;")# 提取 一条res=my_cursor.fetchone()print("提1条:",res)# 设置游标 归零my_cursor.rownumber=0# 提取 全部res=my_cursor.fetchall()print("提全部:",res)# 设置游标位置,指向 2my_cursor.rownumber=2# 提取 3、4 条(共2条数据)res=my_cursor.fetchmany(2)print("提取 3、4 条:",res)# 关闭游标my_cursor.close()# 关闭连接conn.close()

三、异常捕获

3.1 语法

# 语法:try: 尝试执行的代码exceptExceptionaserr: 出现异常后,执行的代码finally: 无论有没有异常,都会执行的代码。

3.2 案例

# 导包importpymysql# 定义全局变量,初值为空。conn=Nonemy_cursor=Nonetry:# 创建连接conn=pymysql.connect(host="211.103.136.244",port=7061,user="student",password="123456",database="test_db",charset="utf8")# 创建游标, 指向 0号 记录my_cursor=conn.cursor()# 执行 select sqlmy_cursor.execute("select * from _book;")# 提取 一条res=my_cursor.fetchone()print("提1条:",res)# 设置游标 归零my_cursor.rownumber=0# 提取 全部res=my_cursor.fetchall()print("提全部:",res)# 设置游标位置,指向 2my_cursor.rownumber=2# 提取 3、4 条(共2条数据)res=my_cursor.fetchmany(2)print("提取 3、4 条:",res)exceptExceptionaserr:print("查询失败:",str(err))finally:# 关闭游标my_cursor.close()# 关闭连接conn.close()

四、增删改-数据(重点)

4.1 增删改操作步骤

4.2 案例

单独实现如下操作:
①:新增一条图书数据(id:5 title:西游记 pub_date:1986-01-01 )
②:把图书名称为 ‘西游记’ 的阅读量增加1
③:删除名称为 ‘西游记’ 的图书

4.2.1 insert插入

""" 新增一条图书数据(id:5 title:西游记 pub_date:1986-01-01 ) insert into t_book(id, title, pub_date) values(9, '西游记', '1986-01-01'); """# 导包importpymysql# 定义全局变量,初值为空。conn=Nonemy_cursor=Nonetry:# 创建连接conn=pymysql.connect(host="211.103.136.244",port=7061,user="student",password="123456",database="test_db",charset="utf8")# 创建游标my_cursor=conn.cursor()# 执行 insert sqlmy_cursor.execute("insert into t_book(id, title, pub_date) values(9, '西游记', '1986-01-01');")# 影响多少行print("Affected rows:",conn.affected_rows())# 提交事务conn.commit()exceptExceptionaserr:print("插入数据异常:",str(err))# 回滚事务conn.rollback()finally:# 关闭游标my_cursor.close()# 关闭连接conn.close()

4.2.2 update修改

""" 把图书名称为 ‘西游记’ 的阅读量增加1。(read 表示阅读量 ) UPDATE t_book set `read` = `read`+ 1 where title = '西游记'; """# 导包importpymysql# 定义全局变量,初值为空。conn=Nonemy_cursor=Nonetry:# 创建连接conn=pymysql.connect(host="172.16.28.4",port=3306,user="root",password="123456",database="books",charset="utf8")# 创建游标my_cursor=conn.cursor()# 执行 update sqlmy_cursor.execute("UPDATE t_book set `read` = `read`+ 1 where title = '西游记';")# 影响多少行print("Affected rows:",conn.affected_rows())# 提交事务conn.commit()exceptExceptionaserr:print("更新sql失败:",str(err))conn.rollback()finally:# 关闭游标my_cursor.close()# 关闭连接conn.close()

4.2.3 delete删除

""" 删除名称为 ‘西游记’ 的图书 delete from t_book where title = '西游记'; """# 导包importpymysql conn=Nonemy_cursor=Nonetry:conn=pymysql.connect(host="172.16.28.4",port=3306,user="root",password="root",database="books",charset="utf8")# 创建游标my_cursor=conn.cursor()# 执行 delete sqlmy_cursor.execute("delete from t_book where title = '西游记';")# 影响多少行print("Affected rows:",conn.affected_rows())# 提交事务conn.commit()exceptExceptionaserr:print("删除sql失败:",str(err))conn.rollback()finally:# 关闭游标my_cursor.close()# 关闭连接conn.close()

五、反引号

反引号的作用:显示字符的本身意思。

`read`=`read`+1

六、小结

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 21:19:01

GitHub Actions自动化测试PyTorch-CUDA镜像兼容性

GitHub Actions自动化测试PyTorch-CUDA镜像兼容性 在深度学习项目日益复杂的今天,一个常见的工程痛点浮出水面:为什么代码在我本地能跑,在CI里却报错?更典型的情况是——模型训练脚本在开发者机器上运行顺畅,但一旦进入…

作者头像 李华
网站建设 2026/5/8 15:18:23

电子电器架构 --- 主机厂的安全理念(上)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

作者头像 李华
网站建设 2026/5/15 6:28:04

GitHub项目README模板:突出PyTorch-CUDA环境优势

GitHub项目README优化:构建高效的PyTorch-CUDA开发环境 在深度学习项目中,最让人头疼的往往不是模型设计,而是环境配置。你是否也经历过这样的场景:论文复现代码跑不通,排查半天才发现是CUDA版本和PyTorch不匹配&#…

作者头像 李华
网站建设 2026/5/15 20:24:02

【毕业设计】基于springBoot的高校毕业生公职资讯系统的设计与实现(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/19 7:32:23

【计算机毕业设计案例】基于Springboot的克州旅游网站的设计与实现精品路线推荐、行程规划、价格查询(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/19 7:31:46

Git Hooks自动化检查PyTorch代码提交规范

Git Hooks自动化检查PyTorch代码提交规范 在深度学习项目日益复杂的今天,一个常见的场景是:团队成员提交的代码在本地运行正常,却在CI流水线或生产环境中因环境差异、风格不一致甚至低级错误而失败。尤其是使用 PyTorch 进行 GPU 加速训练时…

作者头像 李华