安装 PyMySQL
最常用的安装方式是使用 pip(Python 的包安装器)。

步骤 1:打开终端或命令提示符
- Windows: 在开始菜单中搜索
cmd或PowerShell,然后打开。 - macOS: 打开“终端”(Terminal)应用程序。
- Linux: 打开“终端”(Terminal)或“控制台”(Console)。
步骤 2:执行安装命令
在终端中,输入以下命令并按回车键:
pip install PyMySQL
可能会遇到的提示:
- 如果您的系统有多个 Python 版本(Python 2 和 Python 3),您可能需要使用
pip3来确保为 Python 3 安装:pip3 install PyMySQL
- 如果提示
pip不是内部或外部命令,您可能需要先将 Python 的Scripts目录添加到系统的环境变量中。
步骤 3:验证安装
安装完成后,您可以运行以下 Python 代码来验证 PyMySQL 是否已成功安装:
import pymysql
# 如果没有报错,说明安装成功
print("PyMySQL 安装成功!")
print(pymysql.__version__)
将以上代码保存为 .py 文件并运行,或者直接在 Python 交互式环境中输入,如果能打印出版本号,就代表安装成功了。
使用 PyMySQL 连接 MySQL 数据库
安装完成后,就可以在您的 Python 代码中使用它来连接和操作 MySQL 数据库了。
基本连接和查询示例
以下是一个完整的示例,演示如何连接到 MySQL 数据库,执行一个简单的 SELECT 查询,并处理结果。
import pymysql
# 1. 创建数据库连接
# 请将以下占位符替换为您自己的数据库信息
conn = pymysql.connect(
host='localhost', # 数据库主机地址
user='root', # 数据库用户名
password='your_password', # 数据库密码
database='your_database', # 要连接的数据库名
charset='utf8mb4', # 字符编码,推荐使用 utf8mb4
cursorclass=pymysql.cursors.DictCursor # 以字典形式返回结果,方便使用
)
try:
# 2. 创建一个游标对象
# 游标用于执行 SQL 语句
with conn.cursor() as cursor:
# 3. 编写 SQL 查询语句
sql = "SELECT id, name, email FROM users WHERE id = %s"
# 4. 执行 SQL 查询 (注意:使用 %s 作为占位符)
# execute 方法的第二个参数是一个元组
cursor.execute(sql, (1,)) # 查询 id 为 1 的用户
# 5. 获取查询结果
# fetchone() 获取单条结果
result = cursor.fetchone()
# 打印结果
if result:
print("查询结果:", result)
# 可以像字典一样访问数据
print(f"用户名: {result['name']}, 邮箱: {result['email']}")
else:
print("未找到匹配的记录")
finally:
# 6. 关闭数据库连接
# 无论操作是否成功,最后都要关闭连接,释放资源
conn.close()
print("数据库连接已关闭。")
代码解释:
pymysql.connect(...): 用于建立与 MySQL 服务器的连接,您需要提供主机、用户、密码、数据库名等信息。with conn.cursor() as cursor:: 使用with语句可以确保游标在使用完毕后被自动关闭,这是一种良好的实践。sql = "SELECT ... WHERE id = %s": 非常重要! 在PyMySQL中,您应该始终使用%s作为 SQL 语句的占位符,而不是将变量直接拼接到 SQL 字符串中,这可以防止 SQL 注入攻击。cursor.execute(sql, (1,)): 执行 SQL 语句,第二个参数是一个包含所有占位符值的元组,即使只有一个值,也需要写成元组形式(1,)。cursor.fetchone(): 获取查询结果的第一行,如果有多行,可以使用fetchall()获取所有行。conn.close(): 关闭数据库连接,这是必不可少的步骤,否则会导致数据库连接资源泄漏。
执行插入、更新和删除操作
对于 INSERT, UPDATE, DELETE 等会修改数据库的操作,执行完成后必须调用 conn.commit() 来提交事务,否则更改不会真正保存到数据库中。
import pymysql
# 连接信息
conn = pymysql.connect(
host='localhost',
user='root',
password='your_password',
database='your_database',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
try:
with conn.cursor() as cursor:
# --- 插入数据示例 ---
sql_insert = "INSERT INTO users (name, email) VALUES (%s, %s)"
user_to_insert = ('张三', 'zhangsan@example.com')
cursor.execute(sql_insert, user_to_insert)
# --- 更新数据示例 ---
sql_update = "UPDATE users SET email = %s WHERE name = %s"
cursor.execute(sql_update, ('zhangsan_new@example.com', '张三'))
# --- 删除数据示例 ---
sql_delete = "DELETE FROM users WHERE name = %s"
cursor.execute(sql_delete, ('李四',)) # 假设要删除一个叫李四的用户
# 提交事务!这是关键步骤
conn.commit()
print("数据操作成功,已提交事务。")
except Exception as e:
# 如果发生错误,回滚事务
conn.rollback()
print(f"操作失败,已回滚事务: {e}")
finally:
conn.close()
print("数据库连接已关闭。")
关键点:
conn.commit(): 在执行了所有修改操作后调用,将更改永久保存到数据库。conn.rollback(): 如果在操作过程中发生错误,调用它可以撤销当前事务中的所有未提交的更改,保证数据的一致性。try...except...finally: 结构是处理数据库操作的推荐模式,可以确保无论成功还是失败,连接都能被正确关闭。
常见问题与解决方案
Q1: ModuleNotFoundError: No module named 'pymysql'
原因: PyMySQL 没有安装成功,或者 Python 解释器找不到它。
解决方案:
- 确认您使用的
pip版本是否与您的 Python 版本匹配(用python -m pip install PyMySQL)。 - 确认
PyMySQL是否安装到了正确的 Python 环境中,如果您在使用虚拟环境(如venv或conda),请确保在激活虚拟环境后再进行安装。
Q2: pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (10061)")
原因: 无法连接到 MySQL 服务器,这通常不是 PyMySQL 本身的问题,而是数据库服务的问题。
解决方案:
- 确认 MySQL 服务是否正在运行:在 Windows 上检查服务管理器,在 Linux/macOS 上使用
sudo systemctl status mysql。 - 确认主机地址
host是否正确:默认是localhost,MySQL 服务器不在本机,请填写正确的 IP 地址。 - 确认用户名
user和密码password是否正确。 - 确认端口:MySQL 不是运行在默认的
3306端口,您需要在connect函数中添加port=端口号参数。
Q3: pymysql.err.InternalError: (1054, "Unknown column 'xxx' in 'field list'")
原因: 您 SQL 语句中引用的列名在数据库表中不存在。 解决方案:
- 检查 SQL 语句中的列名拼写是否正确。
- 检查您连接的数据库
database和表是否正确。
希望这份详细的指南能帮助您顺利安装和使用 PyMySQL!
