🔥 前言:最近好多粉丝私信我,说想知道怎么用 Python 快速操作 MySQL 数据库,不管是做数据分析、开发小工具还是毕业设计,这都是高频需求!今天特意整理了一份「从 0 到 1」的完整教程,代码全部实测可用,新手跟着步骤走,半小时就能上手~ 话不多说,直接上干货!
📌 一、基础环境准备(3 步搞定)
1. 安装 Python3(Windows 版)
官方下载:https://www.python.org/downloads/✨ 关键步骤:安装时一定要勾选「Add Python to PATH」,不然命令行找不到 Python 哦~2. 安装 VS Code(代码编辑器)
官方下载:https://code.visualstudio.com/📚 推荐插件:Python(微软官方,必装)、Code Runner(一键运行代码,超方便)3. 创建 Python 文件
打开 VS Code → 新建文件 → 保存为mysql_operation.py(后缀必须是 .py),准备写代码啦~
📌 二、Python 基础快速回顾(新手必看)
如果是刚学 Python 的同学,先掌握这些核心知识点,后续操作都能用得上!1. 注释(给代码写 “说明书”)
# 单行注释:用 # 开头,注释一行内容# 下面是多行注释,用三个单引号或双引号包裹'''多行注释第一行多行注释第二行'''"""双引号版多行注释适合注释较长的说明"""
2. 常用数据类型
# 整数(年龄、编号)age = 25# 浮点数(小数)pi = 3.14# 字符串(姓名、文本)name = "maria"# 输出示例print("名字是:", name) # 结果:名字是:maria
3. 条件判断(根据情况执行不同逻辑)
score = 91if score >= 90: print("优秀")elif score >= 80: print("良好")else: print("及格/不及格")
4. 循环(重复执行代码)
# for 循环:遍历字符串name = "maria"for char in name: print(char) # 依次输出 m、a、r、i、a
5. 函数(封装可复用的代码)
# 定义函数:求两个数的最大值def max_value(a, b): return a if a > b else b# 调用函数result = max_value(2, 3)print(result) # 输出 3
🚀 三、Python 操作 MySQL 实战(核心内容)
这部分是重点!教大家用 Python 实现 MySQL 的「增删查改」(CRUD),直接复制代码就能用~先手动在 MySQL 中执行以下 SQL,创建测试表和专用用户(避免用 root 直接操作,更安全):-- 1. 创建测试表 test_tableCREATE TABLE test_table ( id INT AUTO_INCREMENT PRIMARY KEY, # 自增主键 name VARCHAR(255), # 姓名 age INT # 年龄);-- 2. 创建 Python 专用操作用户CREATE USER 'python_rw'@'%' IDENTIFIED BY 'Idyq8_a1';-- 3. 授予权限(增删查改)GRANT insert,delete,select,update ON *.* TO 'python_rw'@'%';
Python 不能直接连 MySQL,需要装个第三方模块,打开命令行执行:pip install pymysql==1.1.0
✅ 提示:如果报错 “pip 不是内部命令”,回去检查 Python 是否添加到 PATH 哦~把以下代码复制到中,替换数据库连接信息(host、database 等),运行即可看到效果!# 导入 pymysql 库import pymysqlfrom pymysql.err import OperationalError, ProgrammingError# 1. 建立数据库连接(替换为你的数据库信息)# 增加连接参数,提升稳定性config = { 'host': '192.168.184.151', # 数据库地址 'user': 'python_rw', # 用户名 'password': 'Idyq8_a1', # 密码 'database': 'maria', # 数据库名 'charset': 'utf8mb4', # 字符集(避免中文乱码) 'connect_timeout': 10, # 连接超时时间(防止卡死) 'cursorclass': pymysql.cursors.DictCursor # 可选:返回字典格式结果,更易读}# 初始化连接和游标为None,避免空对象调用cnx = Nonecursor = Nonetry: # 先测试连接是否能成功建立 cnx = pymysql.connect(**config) print("✅ 数据库连接成功") # 2. 创建游标对象 cursor = cnx.cursor() # 3. 插入数据(INSERT) sql_insert = "INSERT INTO test_table (name, age) VALUES (%s, %s)" values_insert = ("John", 25) cursor.execute(sql_insert, values_insert) cnx.commit() print(f"📥 数据插入成功,新增记录 ID:{cursor.lastrowid}") # 4. 查询数据(SELECT) sql_select = "SELECT * FROM test_table" cursor.execute(sql_select) rows = cursor.fetchall() print("\n📋 查询结果:") # 适配 DictCursor,用键取值(更直观) for row in rows: print(f"ID: {row['id']}, 姓名: {row['name']}, 年龄: {row['age']}") # 5. 更新数据(UPDATE) sql_update = "UPDATE test_table SET age = %s WHERE name = %s" values_update = (30, "John") cursor.execute(sql_update, values_update) cnx.commit() print(f"\n🔄 数据更新成功,影响行数:{cursor.rowcount}") # 6. 删除数据(DELETE) sql_delete = "DELETE FROM test_table WHERE name = %s" values_delete = ("John",) # 单个参数保留逗号 cursor.execute(sql_delete, values_delete) cnx.commit() print(f"🗑️ 数据删除成功,影响行数:{cursor.rowcount}")except OperationalError as e: # 专门捕获连接相关错误(地址/密码/数据库不存在) print(f"❌ 数据库连接失败:{str(e)}") print("请检查:1.数据库地址是否正确 2.用户名/密码是否正确 3.数据库是否存在")except ProgrammingError as e: # 专门捕获SQL语法/表不存在错误 print(f"❌ SQL执行失败:{str(e)}") print("请检查:1.test_table表是否存在 2.字段名(name/age)是否正确")except Exception as e: # 其他未知错误 if cnx: # 只有连接成功才回滚 cnx.rollback() print(f"❌ 操作失败:{str(e)}")finally: # 7. 安全关闭游标和连接(判断对象是否存在,避免空指针) if cursor: cursor.close() if cnx: cnx.close() print("\n🔌 数据库连接已关闭")
⚠️ 关键注意事项(避坑指南)
- 连接信息一定要替换成自己的(host、database、用户名密码);
- 执行插入 / 更新 / 删除后,必须调用 cnx.commit(),否则数据不生效;
- 单个参数的 SQL 语句,values 要加逗号(比如 ("John",)),不然会报错;
- 用 try-except 捕获异常,程序更稳定,还能看到报错原因。
💬 互动时间
如果操作过程中遇到问题(比如连接失败、权限不足、代码报错),欢迎在评论区留言告诉我具体情况,我会第一时间帮你解决~