软件测试|使用PyMySQL访问MySQL数据库的详细指南

简介

PyMySQL是Python中流行的MySQL数据库驱动程序,它提供了便捷的方法来连接、查询和更新MySQL数据库。本文将为您提供使用PyMySQL访问MySQL数据库的详细指南,包括安装PyMySQL、连接数据库、执行查询和更新操作等。

环境准备

在开始之前,您需要确保已经安装了PyMySQL库。可以使用pip命令进行安装:

pip install pymysql

连接到数据库

首先需要建立与MySQL数据库的连接。使用PyMySQL库的示例代码如下:

pymysql.connect(host = 'localhost',port = 3306,user = 'root',password = '123456',db ='students',charset = 'utf8'
)

调用connect 方法生成一个 connect 对象, 通过这个对象来访问数据库

connect 方法的主要参数

  • user,访问数据库的用户
  • password,访问数据库的密码
  • host,Mysql 数据库服务所在的主机
  • port,Mysql 数据库服务的端口号,默认值为 3306
  • db,数据库名
  • charset,字符编码

connect 对象

  • 使用 connect() 方法与数据库连接成功后,connect() 方法返回一个 connect() 对象
  • 与数据库进行通信时, 向 connect 对象发送 SQL 查询命令, 并 connect 对象接收 SQL 查询结果

常用方法

  • close(), 关闭数据库连接
  • commit(),提交当前事务
  • rollback(),取消当前事务
  • cursor(),创建一个游标对象用于执行 SQL 查询命令

cursor 对象

cursor 对象用于执行 SQL 命令和得到 SQL 查询结果

常用方法

  • close(),关闭游标对象
  • execute(),执行一个数据库查询或命令
  • fetchone(),返回结果集的下一行
  • fetchall(),返回结果集中所有行

创建数据库

我们创建一个名为students的库,并创建一个名为students的表,包含idnameage三个字段,代码如下:

db = pymysql.connect(host='localhost',port=3306,user='root',password='1234567890',db='students',charset='utf8'
)# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()sql = """SET character_set_database=utf8;
SET character_set_server=utf8;
DROP DATABASE IF EXISTS students;
CREATE DATABASE students;
USE school;"""
lists = sql.split("\n")
for i in lists:cursor.execute(i)create_sql = """
CREATE TABLE students(id VARCHAR(32),name VARCHAR(32),age INT
);
"""
cursor.execute(create_sql)
insert_sql = """
INSERT INTO students(id, name, age) VALUES ('202301', '穆勒', '18');
"""
cursor.execute(insert_sql)
db.commit()
db.close()

查询数据

查询数据之前,我们先要与数据库进行连接,一旦建立了数据库连接,就可以执行各种查询操作。

db = pymysql.connect(host='localhost',port=3306,user='root',password='1234567890',db='students',charset='utf8'
)# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

fetchall匹配

返回全部匹配结果

sql = "select * from students;"rows = cursor.execute(sql)# 记录数
print("there are %d students" % rows)# 可迭代对象
students = cursor.fetchall()
# 循环输出
for i in students:print(i)# 输出结果
there are 1 students
('202301', '穆勒', 18)

fetchone匹配

返回一条记录

# 查询数据 - fetchone
sql = "select * from students;"rows = cursor.execute(sql)# 根据记录数循环
for i in range(rows):student = cursor.fetchone()print(student)# 输出结果
('202301', '穆勒', 18)

fetchmany匹配

可以自定义返回多少条记录数

# 查询数据 - fetchmany
sql = "select * from students;"rows = cursor.execute(sql)# 可迭代对象
students = cursor.fetchmany(3)# 循环结果集
for i in students:print(i)# 输出结果
('202301', '穆勒', 18)

插入数据

db = pymysql.connect(host='localhost',port=3306,user='root',password='1234567890',db='students',charset='utf8'
)# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 增加数据
id = 202302
name = "基米希"
age = 24sql = 'insert into students(id,name,age) VALUES("%s", "%s", %d)' % (id, name, age)# 执行 insert sql
rows = cursor.execute(sql)# 查看 insert 语句返回结果,其实就是执行成功了多少条数据
print('Insert %d students' % rows)# 只有调用了 commit 方法才能将数据落盘,即提交 insert 操作
db.commit()# 输出结果
Insert 1 students

修改数据

db = pymysql.connect(host='localhost',port=3306,user='root',password='1234567890',db='students',charset='utf8'
)# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 更新数据
id = 202302
name = "基米希"
age = 16sql = 'UPDATE students SET name="%s", age=%d WHERE sno="%s"' % (name, age, id)# 执行 update sql
rows = cursor.execute(sql)# 返回成功修改记录的条数
print('update %d students' % rows)# 调用 commit,才会将 update 操作提交
db.commit()# 输出结果
update 1 students

删除数据

db = pymysql.connect(host='localhost',port=3306,user='root',password='1234567890',db='students',charset='utf8'
)# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 更新数据
sno = 202302
name = "小菠萝"
age = 14sql = 'DELETE FROM students'# 执行 delete sql
rows = cursor.execute(sql)# 返回成功修改记录的条数
print('delete %d students' % rows)# 调用 commit,才会将 delete 操作提交
db.commit()# 输出结果
delete 2 students

总结

本文介绍了使用PyMySQL操作MySQL数据库的详细步骤。从安装PyMySQL开始,连接数据库,执行查询和增加修改删除操作,这些都是使用PyMySQL访问MySQL数据库所需的关键步骤。希望本文能够帮助您使用PyMySQL轻松地操作MySQL数据库,并实现您的数据存储和检索需求。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

死锁与读写锁

一、死锁 死锁(Deadlock)是在并发计算中的一种状态,其中两个或多个进程无法继续执行,因为每个进程都在等待另一个进程释放所占用的资源。这种情况通常发生在系统中的资源分配过程中,其中每个进程都占用一些资源&#…

揭秘大模型「幻觉」:数据偏差、泛化与上下文理解的挑战与解决之道

什么是大模型「幻觉」 所谓的「幻觉」指的是当大模型生成与现实不符或逻辑上不连贯的信息时。这通常发生在模型对某些数据理解不足或数据本身存在偏差的情况下。由于模型是基于概率统计和以往数据训练的,它们可能在面对未知或少见情况时产生不准确的推断。 大模型不具有本地知…

docker - 常用容器部署命令大全(MySQL、Redis、RabbitMQ、ES、Kibana、Nacos、Sentinel)

目录 一、常用容器运行指令 MySQL Redis RabbitMQ ElasticSearch & kibana Nacos Sentinel 一、常用容器运行指令 MySQL docker run -d --name mysql -p 3306:3306 -e TZAsia/Shanghai -e MYSQL_ROOT_PASSWORD1111 mysql:5.7 -e TZAsia/Shanghai:指定…

BMTrain来高效训练预训练模型-大模型的福音

一.背景知识 在2018年,预训练语言模型技术的出现成为人工智能领域一场革命性的变革。研究表明,通过增加模型参数量和训练数据规模,可以有效提升语言模型的性能,因此十亿、百亿甚至千亿级大模型的探索成为业界的热门话题。这一趋势…

LLM Agent之数据分析领域的应用

数据分析:Data-Copilot paper: Data-Copilot: Bridging Billions of Data and Humans with Autonomous Workflow github: https://github.com/zwq2018/Data-Copilot 先介绍下浙大提出的已扩展的数据分析框架,支持多种金融数据类型的查询,数…

HIL(硬件在环)技术汇总梳理

HIL(Hardware-in-the-Loop)测试领域的知名公司有dSPACE、NI、Vector和speedgoat等,以下是针对这几家HIL技术的对比分析: 文章目录 dSPACE NI Vector speedgoat 总结 dSPACE dSPACE成立于1988年,起源自德国的帕德…

使用pagehelper插件进行分页查询

一、导入mybatis和pagehelper坐标 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version> </dependency> <dependency><groupId&…

Mysql为什么只能支持2000w左右的数据量?

首先说明一下&#xff1a; MySQL并没有硬性规定只能支持到2000万左右的数据量。 其实&#xff0c;MySQL能够处理的数据量远远超过这个数字。无论是开源社区版还是商业版&#xff0c; MySQL在适当的硬件和配置下&#xff0c;都能够支持非常大的数据集。 通常所说的“MySQL只能…

Archlinux下自启动rclone mount

路径&#xff1a; /etc/systemd/system/rclonemount.service [Unit] Descriptionrclonemount Requiresnetwork-online.target.wants Afteralist.service[Service] Typesimple ExecStartPre/bin/mkdir -p /media ExecStart/usr/bin/rclone mount \aliyun: /media \--config /ro…

解决Canvas画图清晰度问题

最近在开发Web端远程桌面的时候遇到的一个问题&#xff0c;解决记录一下&#xff0c;分享给各位有需要用到的朋友。 先吹下水&#xff1a;远程桌面的连接我们是通过Websocket连接后&#xff0c;后端不断返回远程端的界面二进制数据流&#xff0c;我接收到之后转为图像&#xf…

GLTF编辑器设置3D纺织纹理贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 位移贴图是一种纹理映射技术&#xff0c;通过改变顶点的位置来模拟细…

算法第十二天-矩形区域不超过K的最大数值和

矩形区域不超过K的最大数值和 题目要求 解题思路 来自[宫水三叶] 从题面来看显然是一道[二维前缀和]的题目。本题预处理前缀和的复杂度为O(m* n) 搜索所有子矩阵需要枚举[矩形左上角]和[矩形右下角]&#xff0c;复杂度是 O ( m 2 ∗ n 2 ) O(m^2 * n^2) O(m2∗n2)&#xff0c…