对于 Python 和 MySQL 的交互,最常用、最官方、也是性能最好的库是 mysql-connector-python,由 MySQL 官方(Oracle)开发和维护。

下面我将为你提供详细的步骤,包括安装、基本使用和遇到问题的解决方案。
核心答案:安装 mysql-connector-python
你需要使用 Python 的包管理工具 pip 来下载和安装这个库。
打开终端或命令行工具
- Windows: 打开 "命令提示符" (CMD) 或 "PowerShell"。
- macOS / Linux: 打开 "终端" (Terminal)。
执行安装命令
在终端中,输入以下命令并按回车:
pip install mysql-connector-python
重要提示:
- 如果你电脑上有多个 Python 版本(Python 2 和 Python 3),你可能需要使用
pip3来确保为 Python 3 安装:pip3 install mysql-connector-python
- 如果你在某些系统(如 Linux)上遇到权限问题,可以尝试使用
sudo(需要管理员权限):sudo pip3 install mysql-connector-python
安装完成后,你就可以在 Python 代码中导入并使用这个库了。
如何使用:一个简单的 Python 连接 MySQL 示例
安装成功后,你可以创建一个 Python 脚本来连接到你的 MySQL 数据库并执行一些基本操作。
前提条件
- 你已经安装并启动了 MySQL 服务器。
- 你知道 MySQL 的 主机地址 (host,通常是
localhost或0.0.1)、端口号 (port,默认是3306)、用户名 (username) 和 密码 (password)。 - 你已经创建了一个要连接的数据库。
示例代码
创建一个名为 connect_mysql.py 的文件,并粘贴以下代码:
import mysql.connector
from mysql.connector import Error
def connect_to_mysql():
"""连接到 MySQL 数据库并执行简单查询"""
connection = None # 初始化连接对象为 None
cursor = None # 初始化游标对象为 None
try:
# 1. 建立数据库连接
# --- 请根据你的实际情况修改以下信息 ---
connection = mysql.connector.connect(
host='localhost', # 数据库主机地址
database='your_database_name', # 你要连接的数据库名
user='your_username', # 数据库用户名
password='your_password' # 数据库密码
)
if connection.is_connected():
db_info = connection.get_server_info()
print(f"成功连接到 MySQL 服务器,版本为: {db_info}")
# 2. 创建一个游标对象
# 游标用于执行 SQL 查询
cursor = connection.cursor()
# 3. 执行 SQL 查询
# 获取数据库版本信息
cursor.execute("SELECT version();")
# 4. 获取查询结果
record = cursor.fetchone()
print(f"你正在使用的数据库是: {record[0]}")
except Error as e:
# 捕获并打印连接或查询过程中的错误
print(f"连接 MySQL 时发生错误: {e}")
finally:
# 5. 关闭游标和连接(非常重要!)
if connection is not None and connection.is_connected():
if cursor is not None:
cursor.close()
connection.close()
print("MySQL 连接已关闭。")
# 调用函数
if __name__ == "__main__":
connect_to_mysql()
如何运行:
- 将代码中的
your_database_name,your_username,your_password替换成你自己的信息。 - 保存文件。
- 在终端中,进入到文件所在的目录,然后运行:
python connect_mysql.py
如果一切顺利,你将看到类似以下的输出:
成功连接到 MySQL 服务器,版本为: 8.0.33
你正在使用的数据库是: 8.0.33
MySQL 连接已关闭。
常见问题与解决方案
ModuleNotFoundError: No module named 'mysql'
原因: pip 安装时可能没有找到正确的 Python 环境。
解决方案:
- 确保你使用的
pip版本与你的 Python 版本匹配,尝试使用python -m pip install ...。python -m pip install mysql-connector-python
- 如果你使用的是虚拟环境(如
venv或conda),请确保你已经激活了该环境,然后再运行安装命令。
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306'
原因: 无法连接到 MySQL 服务器,这是最常见的问题。 解决方案:
- 检查 MySQL 服务是否运行: 确保你的 MySQL 服务器已经启动,你可以在系统服务管理器中查看。
- 检查连接信息: 确认
host是否为localhost或0.0.1,port是否为3306(如果不是默认端口)。 - 检查用户名和密码: 确认你使用的用户名和密码是正确的。
- 检查防火墙: 操作系统的防火墙或网络防火墙可能阻止了
3306端口的连接,尝试暂时关闭防火墙进行测试。 - 检查 MySQL 配置: MySQL 的配置文件 (
my.cnf或my.ini) 中的bind-address可能被设置为了非0.0.1,导致本地无法连接。
mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'your_username'@'localhost' (using password: YES)
原因: 用户名或密码错误,或者该用户没有从你的客户端主机连接的权限。 解决方案:
- 核对用户名和密码,确保没有拼写错误。
- 检查 MySQL 用户权限: 登录到 MySQL 命令行 (
mysql -u your_username -p),执行以下命令,检查你的用户是否可以从localhost访问:SELECT host, user FROM mysql.user WHERE user = 'your_username';
host列不是localhost或 (表示任何主机),你可能需要为该用户授予从localhost访问的权限。
其他选择:mysqlclient
除了官方的 mysql-connector-python,还有一个非常流行的库叫做 mysqlclient,它是旧版 MySQLdb 的一个分支,兼容性好,性能也很高,很多 Django 等框架的文档中会推荐它。
安装 mysqlclient
pip install mysqlclient
注意: mysqlclient 的安装依赖于 C 语言库(如 libmysqlclient-dev),在某些系统(如 macOS, Debian/Ubuntu)上,你可能需要先安装这些依赖才能成功安装 mysqlclient。
- Debian/Ubuntu:
sudo apt-get install default-libmysqlclient-dev build-essential - macOS (使用 Homebrew):
brew install mysql-client
使用 mysqlclient 的示例
它的 API 风格与 mysql-connector-python 略有不同,更接近于 Python 内置的 sqlite3 模块。
import MySQLdb
# 连接数据库
connection = MySQLdb.connect(
host='localhost',
user='your_username',
passwd='your_password',
db='your_database_name'
)
# 获取游标
cursor = connection.cursor()
# 执行查询
cursor.execute("SELECT version();")
# 获取结果
version = cursor.fetchone()
print(f"数据库版本: {version[0]}")
# 关闭连接
cursor.close()
connection.close()
总结与推荐
| 特性 | mysql-connector-python (官方) |
mysqlclient |
|---|---|---|
| 开发者 | Oracle (MySQL 官方) | 社区维护 |
| API | 现代,面向对象,功能丰富 | 传统,类似 sqlite3 |
| 安装 | 纯 Python,pip install 即可 |
依赖 C 库,可能需要额外安装依赖 |
| 性能 | 良好 | 非常好,通常更快 |
| 推荐场景 | 新手首选,追求稳定性和官方支持,不希望处理 C 库依赖。 | 对性能有较高要求,熟悉传统 DB-API 2.0,或在 Django 等框架中使用。 |
给你的建议:
- 如果你刚开始学习,直接使用
mysql-connector-python,它是官方的,文档齐全,安装简单,不容易遇到环境问题。 - 如果你正在使用 Django 框架,或者项目对性能有极致要求,那么可以尝试安装
mysqlclient,如果安装顺利,它会是一个很好的选择。
