【超详细教程】Python 连接 MySQL 全流程实战
在 Python 开发中,数据库基本是绕不开的核心环节,而 MySQL + PyMySQL 是最常见、最稳定、最轻量的组合。
很多同学在刚开始连接数据库时,经常会遇到连不上、编码错误、游标报错等问题。
这篇文章我会用非常清晰的方式带你完成:
- PyMySQL 安装
- 数据库连接参数配置
- 创建连接对象
- 创建游标对象
- 执行 SQL 查询
- 执行插入语句
- 完整代码可直接运行
内容全部来自实战总结,照着敲你就能用!
⭐ 一、安装 PyMySQL
PyMySQL 是 Python 中用于连接 MySQL 的轻量级库,安装方式非常简单:
pip install pymysql 安装完成后我们就可以在项目中使用它进行数据库操作。
⭐ 二、准备数据库连接配置
连接 MySQL 需要提供登录信息,我们通常将参数写成一个字典,方便管理:
import pymysql db_confing ={'host':'127.0.0.1',# 服务器地址'port':3306,# MySQL 端口'user':'root',# 用户名'password':'root',# 密码'db':'wp',# 需要连接的数据库'charset':'utf8',# 字符编码}⚠ 这些参数必须真实存在,否则连接会失败。
⭐ 三、建立数据库连接
PyMySQL 最核心的一句代码:
数据库对象 = pymysql.connect(**db_confing)print(数据库对象)这里使用 **db_confing 是 Python 字典解包语法,等同于:
host='127.0.0.1', port=3306, user='root' ... 执行后会得到类似:
<pymysql.connections.Connection object at 0xxx> 代表连接成功。
⭐ 四、创建游标对象(Cursor)
游标对象用来 执行 SQL 与 接收查询结果。
游标对象 = 数据库对象.cursor()print(游标对象)每一次查询、插入,都必须通过游标来完成。
⭐ 五、执行 SQL 查询(SELECT)
下面是最常用的查询模式:
# 创建游标对象 游标对象 = 数据库对象.cursor()# 写 SQL 语句 sql ='SELECT * FROM hk'# 执行 SQL 游标对象.execute(sql)# 接受所有结果 返回结果 = 游标对象.fetchall()# 打印结果for row in 返回结果:print(row)# 关闭 游标对象.close() 数据库对象.close()这里 fetchall() 会返回一个 元组列表,每一行数据都是一个元组。
⭐ 六、封装查询函数(实战)
defselect(): sql ='select * from demo' 游标对象.execute(sql) 返回结果 = 游标对象.fetchall()print(返回结果)你可以在需要的地方直接调用:
select()⭐ 七、执行插入(INSERT + commit)
插入与查询不同,执行后必须 commit(),否则无法真正写入数据库。
definsert(): name =input('请输入你的姓名:') sql =f'insert into demo value(null,"{name}")' 游标对象.execute(sql) 数据库对象.commit()# ✔️ 必须提交⚠ 注意字符串需要加引号,否则 SQL 会报错。
下面我在你 刚刚那篇 ZEEKLOG 博客的基础上,继续追加两个核心模块:
✅ DELETE(删除数据)
✅ UPDATE(修改数据)
格式依旧符合 ZEEKLOG 爆款文章结构,你可以直接复制回博客中,放在原文 “七、执行插入(INSERT)” 的后面即可。
⭐ 八、执行删除(DELETE)
删除操作同样需要 commit() 才能生效。
最推荐写成一个交互式函数:输入要删除的 ID,然后执行删除。
defdelete(): delete_id =input('请输入要删除的ID:') sql =f'DELETE FROM demo WHERE id = {delete_id}' 游标对象.execute(sql) 数据库对象.commit()print(f'ID 为 {delete_id} 的记录已删除')⚠ 注意:
- DELETE 操作必须加 WHERE 条件
- 否则可能会删光整个表!
示例输入:
请输入要删除的ID:3 输出:
ID 为 3 的记录已删除 ⭐ 九、执行修改(UPDATE)
UPDATE 同样需要提交才能生效。
这是一个最常见的「根据 ID 修改姓名」的例子:
defupdate(): update_id =input('请输入要修改的ID:') new_name =input('请输入新的姓名:') sql =f'UPDATE demo SET name = "{new_name}" WHERE id = {update_id}' 游标对象.execute(sql) 数据库对象.commit()print(f'ID 为 {update_id} 的记录已成功修改')执行时会有两次输入:
请输入要修改的ID:2 请输入新的姓名:王五 输出:
ID 为 2 的记录已成功修改 ⭐ 十、最终完整版(增删改查四合一)
你可以在原文的最终代码中加入以下内容,结构完全统一:
defselect(): sql ='select * from demo' 游标对象.execute(sql) 返回结果 = 游标对象.fetchall()print(返回结果)definsert(): name =input('请输入你的姓名:') sql =f'insert into demo value(null,"{name}")' 游标对象.execute(sql) 数据库对象.commit()print('插入成功')defdelete(): delete_id =input('请输入要删除的ID:') sql =f'DELETE FROM demo WHERE id = {delete_id}' 游标对象.execute(sql) 数据库对象.commit()print(f'ID 为 {delete_id} 的记录已删除')defupdate(): update_id =input('请输入要修改的ID:') new_name =input('请输入新的姓名:') sql =f'UPDATE demo SET name = "{new_name}" WHERE id = {update_id}' 游标对象.execute(sql) 数据库对象.commit()print(f'ID 为 {update_id} 的记录已成功修改')🎯 总结:增删改查你已经全会了!
至此为止,你已经拥有:
- ✔ SELECT 查询
- ✔ INSERT 插入
- ✔ DELETE 删除
- ✔ UPDATE 修改
- ✔ commit 提交机制
- ✔ 游标对象生命周期
- ✔ 完整数据库交互代码