Python3 MySQL 数据库
关系型数据库是后端存储的基石。Python 操作 MySQL 最常用 PyMySQL(纯 Python 实现的驱动,免编译)。掌握连接、游标、增删改查与事务提交,就能把数据可靠地读写进 MySQL。
安装 PyMySQL
pip install pymysql
运行前提:已有可访问的 MySQL 服务,并提前建好目标数据库(如 testdb),然后在代码里配置连接参数。
建立连接
import pymysql
# 需安装依赖并配置环境后运行:pip install pymysql
conn = pymysql.connect(
host="127.0.0.1", # MySQL 所在主机
port=3306, # MySQL 默认端口
user="root", # 用户名
password="123456", # 密码,换成你自己的
database="testdb", # 要操作的数据库
charset="utf8mb4", # UTF-8,支持中文
)
游标与建表
SQL 一律通过"游标"执行:conn.cursor() 拿到游标,再 execute(sql):
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT
)
""")
conn.commit() # 建表等写操作需提交才生效
增删改查:占位符 %s
参数一律用 %s 占位符 + 参数元组传值,由驱动负责转义,可防 SQL 注入;千万不要用 f-string 拼接 SQL:
cursor = conn.cursor()
# 增
sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
cursor.execute(sql, ("张三", 25))
print(cursor.rowcount) # 输出:1
# 改
cursor.execute("UPDATE users SET age = %s WHERE name = %s", (26, "张三"))
# 查
cursor.execute("SELECT id, name, age FROM users WHERE name = %s", ("张三",))
print(cursor.fetchone()) # 输出:(1, '张三', 26)
# 删
cursor.execute("DELETE FROM users WHERE name = %s", ("张三",))
conn.commit() # 提交事务,增删改才真正落库
查询结果遍历:fetchall / fetchone
fetchone 取一行,fetchall 取全部,每行是一个元组:
cursor.execute("SELECT id, name, age FROM users")
rows = cursor.fetchall() # 取回全部结果
for row in rows: # 遍历每一行
print(row) # 输出:(1, '李四', 30) 等(内容依数据而定)
事务:commit 与 rollback
写操作默认要 commit 才生效;一批操作中途出错时 rollback 回滚,避免数据"改了一半":
try:
cursor.execute("UPDATE users SET age = age + 1")
conn.commit() # 全部成功 → 提交
except Exception:
conn.rollback() # 出错 → 回滚到操作前状态
用 with 自动管理资源
conn.cursor() 支持上下文管理器,with 块结束自动关闭游标:
with conn.cursor() as cursor: # 游标用后自动关闭
cursor.execute("SELECT COUNT(*) FROM users")
print(cursor.fetchone()[0]) # 输出:3(用户总数,依数据而定)
conn.close() # 连接用完要关闭
小结:pip 安装 PyMySQL 后,用 connect 传 host/user/password/database 建立连接;游标 execute 执行 SQL、%s 占位符防注入,写操作 commit、出错 rollback,再配合 with 上下文管理资源。