Python入门:Python3 PyMySQL 驱动操作数据库全面学习教程

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 PyMySQL 驱动操作数据库全面学习教程

🌐 前篇文章咱们练习了 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 工具,可通过以下方式安装:

Linux 系统:

$ wget https://bootstrap.pypa.io/ez_setup.py $ python3 ez_setup.py 

三、数据库连接准备

连接 MySQL 数据库前,需要确认以下事项:

  1. 已创建目标数据库(例如 xcleigh)。
  2. 已在数据库中创建操作表(例如 EMPLOYEE,字段包含 FIRST_NAMELAST_NAMEAGESEXINCOME)。
  3. 已知数据库连接信息:主机地址(如 localhost)、用户名(如 testuser)、密码(如 test123)、数据库名(如 xcleigh)。
  4. 已安装 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 网络编程全面学习教程!

附录:扩展学习资源

  1. 官方资源
  2. 本专栏特色资源
    • 代码资源仓库:ZEEKLOG专属资源在线获取
    • 海量Python教程:关注公众号:xcLeigh,获取网盘地址
    • 一对一答疑:添加微信与博主在线沟通(备注“Python专栏”

联系博主

    xcLeigh 博主,全栈领域优质创作者,博客专家,目前,活跃在ZEEKLOG、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于ZEEKLOG平台,作者:xcLeigh所有权归作者所有)https://xcleigh.blog.ZEEKLOG.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

Read more

Flutter 三方库 df_generate_dart_models_core 的鸿蒙化适配指南 - 实现自动化的数据模型代码生成、支持 JSON 反序列化模板定义与工程化规范一致性

Flutter 三方库 df_generate_dart_models_core 的鸿蒙化适配指南 - 实现自动化的数据模型代码生成、支持 JSON 反序列化模板定义与工程化规范一致性

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 df_generate_dart_models_core 的鸿蒙化适配指南 - 实现自动化的数据模型代码生成、支持 JSON 反序列化模板定义与工程化规范一致性 前言 在进行 Flutter for OpenHarmony 的大规模业务逻辑开发时,手动编写海量的 Data Models(POJO/Entity)以及配套的 fromJson/toJson 方法不仅枯燥乏味,还极易引入手写错误。df_generate_dart_models_core 是一个强大的代码生成核心库,它能将原始 JSON 样本或 Schema 自动转化为符合 Dart 规范的数据类代码。本文将指导大家如何将该库集成到鸿蒙项目的工程化提效链路中。 一、原理解析

By Ne0inhk

OpenCLAW Linux部署全攻略

OpenCLAW 在 Linux 系统中的完整部署指南 环境准备与前置条件 在开始安装 OpenCLAW 之前,需要确保您的 Linux 系统满足以下基本要求: 环境组件版本要求验证命令Node.js22.0.0 或更高版本node --versionnpm对应 Node.js 版本npm --versionPython3.8 或更高版本python3 --version系统内存≥ 2GBfree -h网络连接稳定互联网连接ping -c 3 google.com Node.js 环境配置 如果系统中未安装合适版本的 Node.js,推荐使用 Node Version Manager (NVM) 进行安装: # 安装 NVM curl -o- https://raw.githubusercontent.com/

By Ne0inhk
⓫⁄₆ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 自动化枚举

⓫⁄₆ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 自动化枚举

郑重声明:本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。 🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论 | 保持连接💬 🌌 立即前往 👉晖度丨安全视界🚀 ▶ 信息收集 ➢ Windows权限提升 ➢  自动化枚举 🔥🔥🔥 ▶ 漏洞检测 ▶ 初始立足点  ▶ 权限提升  ▶ 横向移动 ▶ 报告/分析 ▶ 教训/修复 目录

By Ne0inhk
ARM Linux 驱动开发篇---Linux 设备树简介-- Ubuntu20.04

ARM Linux 驱动开发篇---Linux 设备树简介-- Ubuntu20.04

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》   《嵌入式linux驱动开发》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言 一、什么是设备树? 二、DTS、DTB 和 DTC 三、DTS编译规则 四、DTB 文件最终如何被内核使用? 总结 前言 在传统驱动中,GPIO址、中断号、时钟参数等硬件信息都硬编码在代码里,换一块开发板就要改一次驱动;而设备树通过.dts文件统一描述所有硬件资源,驱动只需通过标准 API获取资源,实现 “一次编写、多板适配”。如今设备树已经成为 Linux 驱动开发的核心规范,是每一位嵌入式

By Ne0inhk