欢迎光临
我们一直在努力

Python 操作 MySQL 数据库

Python 操作 MySQL 数据库(pymysql 从入门到封装)

本文讲解如何使用 Python 的 pymysql 模块连接、操作 MySQL 数据库,包括增删改查、事务处理、SQL 注入防范以及封装工具类。所有代码均基于 Python 3 + MySQL 8.0,可直接复制运行。


一、为什么需要数据库驱动?选择 pymysql

业务场景:Python Web 后端(如 Flask、Django)需要将用户数据保存到 MySQL。 Web后端重要性:⭐⭐⭐⭐⭐(核心技能,几乎每个后端项目都要用) 面试标注:★★★(常问驱动选型)

1.1 【What】是什么

Python 和 MySQL 是两个独立的软件,它们之间需要 驱动程序 作为桥梁。常见的 MySQL 驱动有:

  • mysqldb (MySQL-python):C 语言开发,速度快,但仅支持 Python 2,Windows 安装困难。
  • mysqlclient:基于 C,支持 Python 3,但编译安装可能报错。
  • pymysql:纯 Python 实现,安装简单,兼容 Python 3,速度稍慢但足够大部分场景。

生活化比喻: 驱动就像电源转换插头。你去国外旅游(Python 访问 MySQL),插座孔型不同,需要一个转换插头(驱动)才能让电器正常工作。pymysql 就是那种最通用的转换插头,哪里都能用,虽然转换效率比原装(C 驱动)低一点点,但省心。

1.2 【Why】为什么选 pymysql

  • 纯 Python:无需编译,pip install 即可,避免安装 C 库时的各种报错。
  • 兼容性好:完全支持 Python 3,与 MySQL 8.0 配合良好。
  • 社区活跃:文档丰富,遇到问题容易找到解决方案。

1.3 【How】安装与基本流程

pip install pymysql

Python 操作 MySQL 的标准流程(五个步骤):

import pymysql

# 1. 连接数据库(获得 Connection 对象)
conn = pymysql.connect(host=\’localhost\’, user=\’root\’, password=\’root\’, db=\’test\’, charset=\’utf8\’)

# 2. 获取游标(Cursor 对象,用于执行 SQL)
cursor = conn.cursor()

# 3. 执行 SQL 语句
cursor.execute(\”SELECT VERSION()\”)

# 4. 获取结果(如果是查询)
result = cursor.fetchone()
print(\”MySQL 版本:\”, result)

# 5. 关闭游标和连接
cursor.close()
conn.close()


二、pymysql 核心函数详解

2.1 连接数据库 – connect()

【What】是什么

pymysql.connect() 用于建立 Python 到 MySQL 服务器的网络连接,返回一个 Connection 对象。

【Why】为什么需要参数

MySQL 服务端可能不在本地(host),可能有不同端口(port),需要用户名密码验证(user/password),还要指定默认数据库(db)和字符集(charset)。这些参数缺一不可。

【How】怎么用

import pymysql

conn = pymysql.connect(
host=\’localhost\’, # MySQL 服务所在主机
port=3306, # 端口号,默认 3306
user=\’root\’, # 用户名
password=\’root\’, # 密码
db=\’sxt\’, # 要连接的数据库名(可选,也可以后面 use)
charset=\’utf8\’ # 字符集,推荐 utf8 或 utf8mb4
)

2.2 获取游标 – cursor()

游标是操作数据库的“手”,通过它才能执行 SQL 并获取结果。

cursor = conn.cursor()

2.3 执行 SQL – execute() 与 executemany()

方法
用途
示例
execute(query, args) 执行单条 SQL cursor.execute(\”INSERT INTO user VALUES (%s, %s)\”, (\’张三\’, 25))
executemany(query, args) 批量执行(如批量插入) cursor.executemany(\”INSERT INTO user VALUES (%s, %s)\”, [(\’李四\’,30), (\’王五\’,28)])

注意:args 可以是元组或列表,SQL 中使用 %s 作为占位符(无论字段类型,都用 %s)。

2.4 提交事务 – commit()

在 增、删、改(DML)操作后,必须调用 conn.commit() 才会真正写入数据库。默认 pymysql 关闭了自动提交。

2.5 回滚 – rollback()

如果执行 DML 过程中发生异常,调用 conn.rollback() 撤销本次操作,恢复到执行前的状态。


三、实践:创建数据库和数据表

3.1 创建数据库(不带 db 参数连接)

import pymysql

# 连接时不指定数据库
conn = pymysql.connect(host=\’localhost\’, port=3306, user=\’root\’, password=\’root\’, charset=\’utf8\’)
cursor = conn.cursor()

# 创建数据库(指定字符集 utf8mb4)
sql = \”CREATE DATABASE sxt DEFAULT CHARACTER SET = \’utf8mb4\’\”
cursor.execute(sql)

print(\”数据库创建成功\”)

cursor.close()
conn.close()

3.2 创建数据表(切换到刚创建的数据库)

import pymysql

conn = pymysql.connect(host=\’localhost\’, user=\’root\’, password=\’root\’, db=\’sxt\’, charset=\’utf8\’)
cursor = conn.cursor()

sql =

赞(0)
未经允许不得转载:171主机测评 » Python 操作 MySQL 数据库
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址