Python入门:Python3 PyMySQL 驱动操作数据库全面学习教程
Python入门:Python3 PyMySQL 驱动操作数据库全面学习教程
Python入门:Python3 PyMySQL 驱动操作数据库全面学习教程,本文是关于 Python3 使用 PyMySQL 驱动操作 MySQL 数据库的教程,首先介绍了 PyMySQL 的定义,它是 Python3 连接 MySQL 的库,遵循特定规范。接着讲解了多种安装方法及常见问题解决,然后说明连接数据库的准备工作,还详细演示了连接数据库、创建表、增删改查等核心操作,同时介绍了事务处理的方法和特性,以及各类错误异常的相关内容,帮助初学者快速掌握相关技能。

前言
Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。
🥇 点击进入Python入门专栏,Python凭借简洁易读的语法,是零基础学习编程的理想选择。本专栏专为初学者设计,系统讲解Python核心基础:变量、数据类型、流程控制、函数、文件操作及常用库入门。通过清晰示例与实用小项目,助你快速掌握编程思维,打下坚实根基,迈出自动化办公、数据分析或Web开发的第一步。
🥇 点击进入Python小游戏实战专栏, 寓教于乐,用Python亲手打造经典小游戏!本专栏通过开发贪吃蛇、飞机大战、猜数字、简易版俄罗斯方块等趣味项目,在实践中掌握Python核心语法、面向对象编程、事件处理、图形界面(如Pygame)等关键技能,将枯燥的代码学习转化为可见的成果,让学习编程充满乐趣与成就感,快速提升实战能力。
🥇 点击进入Python小工具实战专栏,告别重复劳动,用Python打造效率神器!本专栏教你开发文件批量处理、自动邮件通知、简易爬虫、桌面提醒、密码生成器、天气查询等实用小工具。聚焦os、shutil、requests、smtplib、schedule等核心库,通过真实场景案例,快速掌握自动化脚本编写技巧,解放双手,显著提升工作与生活效率,让代码真正服务于你的日常。
🥇 点击进入Python爬虫实战专栏,解锁网络数据宝库!本专栏手把手教你使用Python核心库(如requests、BeautifulSoup、Scrapy)构建高效爬虫。从基础网页解析到动态页面抓取、数据存储(CSV/数据库)、反爬策略应对及IP代理使用,通过实战项目(如电商比价、新闻聚合、图片采集、舆情监控),掌握合法合规获取并利用网络数据的核心技能,让数据成为你的超能力。
🥇 点击进入Python项目实战专栏,告别碎片化学习,挑战真实项目!本专栏精选Web应用开发(Flask/Django)、数据分析可视化、自动化办公系统、简易爬虫框架、API接口开发等综合项目。通过需求分析、架构设计、编码实现、测试部署的全流程,深入掌握工程化开发、代码复用、调试排错与团队协作核心能力,积累高质量作品集,真正具备解决复杂问题的Python实战经验。
🌐 前篇文章咱们练习了 Python入门:Python3 使用 mysql-connector 驱动操作 MySQL 数据库全面学习教程 ,如果忘记了,可以去重温一下,不停的重复敲击基础代码,有助于让你更加熟练掌握一门语言。今天咱们继续学习 ,Python3 PyMySQL 驱动操作数据库全面学习教程,下面开始吧!
在 Python 开发中,数据库操作是非常重要的一环。本文将详细介绍如何使用 PyMySQL 驱动在 Python3 中连接并操作 MySQL 数据库,包括安装配置、连接数据库以及增删改查等核心操作,适合初学者快速入门。
一、什么是 PyMySQL?
PyMySQL 是 Python3.x 版本中用于连接 MySQL 服务器的第三方库,而 Python2 中则使用 mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库,无需依赖额外的 C 扩展,安装和使用都非常便捷。
二、PyMySQL 安装步骤
在使用 PyMySQL 之前,需要先确保其已安装。以下是几种常见的安装方式:
1. 使用 pip 命令安装(推荐)
这是最简单的安装方式,直接在终端执行:
$ pip3 install PyMySQL 控制台输出
2. 源码安装(适用于无 pip 环境)
然后执行安装命令:
$ python3 setup.py install首先通过 git 克隆源码(或手动下载):
$ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ 3. 指定版本安装
如果需要安装特定版本的 PyMySQL,可以使用 curl 命令:
# X.X 替换为具体版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X |tar xz $ cd PyMySQL* $ python3 setup.py install# 安装完成后可删除解压的目录安装常见问题
如果安装过程中出现 ImportError: No module named setuptools 错误,说明缺少 setuptools 工具,可通过以下方式安装:
- 其他系统可参考 setuptools 官方文档。
Linux 系统:
$ wget https://bootstrap.pypa.io/ez_setup.py $ python3 ez_setup.py 三、数据库连接准备
连接 MySQL 数据库前,需要确认以下事项:
- 已创建目标数据库(例如
xcleigh)。 - 已在数据库中创建操作表(例如
EMPLOYEE,字段包含FIRST_NAME、LAST_NAME、AGE、SEX、INCOME)。 - 已知数据库连接信息:主机地址(如
localhost)、用户名(如testuser)、密码(如test123)、数据库名(如xcleigh)。 - 已安装 PyMySQL 模块。
四、核心操作实战
1. 连接数据库
以下实例演示如何连接 MySQL 中的 xcleigh 数据库,并获取数据库版本信息:
#!/usr/bin/python3import pymysql # 打开数据库连接 db = pymysql.connect( host='localhost',# 主机地址 user='testuser',# 用户名 password='test123',# 密码 database='xcleigh'# 数据库名)# 使用 cursor() 方法创建游标对象 cursor = db.cursor()# 执行 SQL 查询(获取数据库版本) cursor.execute("SELECT VERSION()")# 使用 fetchone() 方法获取单条数据 data = cursor.fetchone()print(f"Database version : {data} ")# 关闭数据库连接 db.close()控制台输出
2. 创建数据库表
如果数据库连接成功,可以使用 execute() 方法创建表。以下实例创建 EMPLOYEE 表:
#!/usr/bin/python3import pymysql # 打开数据库连接 db = pymysql.connect(host='localhost', user='testuser', password='test123', database='xcleigh')# 创建游标对象 cursor = db.cursor()# 先删除已存在的表(如果有) cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")# 定义创建表的 SQL 语句 sql ="""CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )"""# 执行 SQL 语句 cursor.execute(sql)# 关闭连接 db.close()3. 插入数据
向表中插入数据时,需使用 INSERT 语句,并通过 commit() 提交事务(若失败则用 rollback() 回滚)。
示例 1:直接编写 SQL 语句
#!/usr/bin/python3import pymysql db = pymysql.connect(host='localhost', user='testuser', password='test123', database='xcleigh') cursor = db.cursor()# SQL 插入语句 sql ="""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""try:# 执行 SQL 语句 cursor.execute(sql)# 提交到数据库执行 db.commit()except:# 发生错误时回滚 db.rollback()# 关闭连接 db.close()示例 2:通过变量传递参数
#!/usr/bin/python3import pymysql db = pymysql.connect(host='localhost', user='testuser', password='test123', database='xcleigh') cursor = db.cursor()# 使用变量拼接 SQL 语句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s','%s',%s,'%s',%s)" % \ ('Mac','Mohan',20,'M',2000)# 变量值try: cursor.execute(sql) db.commit()except: db.rollback() db.close()4. 查询数据
查询数据主要使用以下方法:
fetchone():获取下一条查询结果(单条数据)。fetchall():获取所有返回结果(多条数据)。rowcount:只读属性,返回执行execute()后影响的行数。
示例:查询工资大于 1000 的数据
#!/usr/bin/python3import pymysql db = pymysql.connect(host='localhost', user='testuser', password='test123', database='xcleigh') cursor = db.cursor()# SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME >%s" %(1000)try:# 执行 SQL 语句 cursor.execute(sql)# 获取所有记录 results = cursor.fetchall()# 遍历结果for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4]# 打印结果print(f"fname={fname}, lname={lname}, age={age}, sex={sex}, income={income}")except:print("Error: unable to fetch data")# 关闭连接 db.close()执行结果:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000 5. 更新数据
更新操作使用 UPDATE 语句,同样需要通过 commit() 或 rollback() 处理事务。
示例:将性别为 ‘M’ 的记录年龄加 1
#!/usr/bin/python3import pymysql db = pymysql.connect(host='localhost', user='testuser', password='test123', database='xcleigh') cursor = db.cursor()# SQL 更新语句 sql ="UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'"%('M')try: cursor.execute(sql) db.commit()except: db.rollback() db.close()6. 删除数据
删除操作使用 DELETE 语句,事务处理逻辑与插入、更新一致。
示例:删除年龄大于 20 的记录
#!/usr/bin/python3import pymysql db = pymysql.connect(host='localhost', user='testuser', password='test123', database='xcleigh') cursor = db.cursor()# SQL 删除语句 sql ="DELETE FROM EMPLOYEE WHERE AGE > %s"%(20)try: cursor.execute(sql) db.commit()except: db.rollback() db.close()五、事务处理
事务是数据库操作的基本单位,确保数据的一致性。PyMySQL 中事务处理通过以下方法实现:
commit():提交事务,将所有操作永久保存到数据库。rollback():回滚事务,若操作失败则撤销所有已执行的操作。
事务具有 ACID 特性:
- 原子性(Atomicity):事务中的操作要么全部执行,要么全部不执行。
- 一致性(Consistency):事务执行后,数据库从一个一致状态变为另一个一致状态。
- 隔离性(Isolation):多个事务并发执行时,彼此不干扰。
- 持久性(Durability):事务提交后,数据修改永久生效。
六、错误处理
PyMySQL 定义了多种数据库操作相关的错误和异常,常见的如下:
| 异常 | 描述 |
|---|---|
Warning | 严重警告(如数据插入被截断),是 StandardError 的子类。 |
Error | 所有非警告类错误的基类,是 StandardError 的子类。 |
InterfaceError | 数据库接口模块自身的错误(非数据库错误),是 Error 的子类。 |
DatabaseError | 与数据库相关的错误,是 Error 的子类。 |
DataError | 数据处理错误(如除零、数据超范围),是 DatabaseError 的子类。 |
OperationalError | 操作数据库时的非用户控制错误(如连接断开、数据库不存在)。 |
IntegrityError | 数据完整性错误(如外键检查失败),是 DatabaseError 的子类。 |
ProgrammingError | 程序错误(如 SQL 语法错误、表不存在),是 DatabaseError 的子类。 |
异常继承结构:
Exception |__Warning |__Error |__InterfaceError |__DatabaseError |__DataError |__OperationalError |__IntegrityError |__InternalError |__ProgrammingError |__NotSupportedError 总结
本文详细介绍了 PyMySQL 的安装、数据库连接及增删改查等核心操作,同时涵盖了事务处理和错误处理的基础知识。掌握这些内容后,你可以在 Python3 中轻松实现与 MySQL 数据库的交互。实际开发中,建议结合具体业务场景灵活运用,并注意异常处理和事务管理,确保数据操作的安全性和准确性。
如果有更多复杂需求(如连接池、ORM 框架),可以进一步学习 PyMySQL 的高级特性或扩展库(如 SQLAlchemy)。
💡下一篇咱们学习 Python入门:Python3 网络编程全面学习教程!
附录:扩展学习资源
- 官方资源:
- Python官网:https://www.python.org
- PyPI:https://pypi.org(查找第三方库)
- 安装包等相关文件(另附带pycharm工具),网盘下载地址:https://pan.quark.cn/s/649af731037c
- 学习资料视频和文档资源,网盘下载地址: https://pan.quark.cn/s/ee16901a8954
- 本专栏特色资源:
- 代码资源仓库:ZEEKLOG专属资源在线获取
- 海量Python教程:关注公众号:xcLeigh,获取网盘地址
- 一对一答疑:添加微信与博主在线沟通(
备注“Python专栏”)
联系博主
xcLeigh 博主,全栈领域优质创作者,博客专家,目前,活跃在ZEEKLOG、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。
亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。
愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。
至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。
💞 关注博主 🌀 带你实现畅游前后端!
🏰 大屏可视化 🌀 带你体验酷炫大屏!
💯 神秘个人简介 🌀 带你体验不一样得介绍!
🥇 从零到一学习Python 🌀 带你玩转Python技术流!
🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!
💦 注:本文撰写于ZEEKLOG平台,作者:xcLeigh(所有权归作者所有) ,https://xcleigh.blog.ZEEKLOG.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。
📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌