MySQLdb (Python 2) / mysqlclient (Python 3) 是 Python 連接 MySQL 最常用的驅動。本文涵蓋 Windows、Ubuntu、CentOS 的安裝步驟與常見錯誤排查。
pip install mysqlclient‑1.4.6‑cp38‑cp38m‑win_amd64.whlpython -c "import MySQLdb; print('OK')" sudo apt-get update
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential -y
pip3 install mysqlclient
sudo yum install gcc python3-devel mysql-devel -y
pip3 install mysqlclient
| 錯誤現象 | 原因 | 解決方案 |
|---|---|---|
| mysql_config not found | MySQL 開發庫未裝或非標準路徑 | 安裝 libmysqlclient-dev / mysql-devel;或 ln -s /usr/local/mysql/bin/mysql_config /usr/bin/ |
| x86_64-linux-gnu-gcc not found | 缺少編譯工具鏈 | apt-get install build-essential / yum groupinstall "Development Tools" |
| command 'gcc' failed with exit status 1 | 缺少 Python.h 或 MySQL 头文件 | 安裝 python3-dev / python3-devel 及 mysql-devel |
import MySQLdb
conn = MySQLdb.connect(
host='192.168.2.14',
port=3306,
user='root',
passwd='123456',
db='demo',
charset='utf8'
)
cur = conn.cursor()
# 建表示例
cur.execute("""
CREATE TABLE IF NOT EXISTS teacher (
id INT(5), name VARCHAR(20), class VARCHAR(20), age VARCHAR(10)
)
""")
# 參數化插入(防注入)
cur.execute("INSERT INTO teacher VALUES (%s,%s,%s,%s)", (23, 'zhangsan', 'science', 15))
# 批量插入
data = [(11,'wangwu','art',23), (8,'john','math',22), (3,'Tom','physical',25)]
cur.executemany("INSERT INTO teacher VALUES (%s,%s,%s,%s)", data)
# 查詢
cur.execute("SELECT * FROM teacher")
print("總行數:", cur.rowcount)
for row in cur.fetchall():
print(row)
# 提交與關閉
conn.commit()
cur.close()
conn.close()
/etc/mysql/my.cnf (或 mysqld.cnf):bind-address = 0.0.0.0 允許遠程連接,重啟 systemctl restart mysql。MySQLdb 僅支援 Python 2,mysqlclient 是其分支並支援 Python 3,導入名仍為 MySQLdb。DBUtils 或 SQLAlchemy 管理連接池。核心步驟:安裝系統依賴 → pip 安裝 mysqlclient → 配置 MySQL 遠程訪問 → 參數化 SQL 操作。遇到編譯錯誤 99% 為缺少開發包,對症安裝即可。