首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Python 3 連接 MySQL 驅動選型指南:mysqlclient vs PyMySQL vs mysql-connector-python

     編輯:MySQL 綜合教學

Python 3 連接 MySQL 驅動選型指南:mysqlclient vs PyMySQL vs mysql-connector-python

Python 3 環境下原生 MySQLdb(mysql-python)已停更、不支援 Python 3。主流替代方案有三:mysqlclient(C 擴充、效能最強)、PyMySQL(純 Python、相容性佳)、mysql-connector-python(Oracle 官方、純 Python)。本文對比效能、相容性、維護狀態,助你選型。

一、四大驅動對比表

驅動實現Python 3MySQLdb 相容效能維護狀態推薦場景
mysqlclientC 擴充 (fork MySQLdb)✅ 3.3+✅ 幾乎 100%🥇 最快 (C 層)活躍,Django 官方推薦生產高併發、Django 專案
PyMySQL純 Python✅ 完整支援✅ pymysql.install_as_MySQLdb() 後透明替換🥈 中等活躍,OpenStack 採用需 eventlet/gevent 協程、無法編譯 C 擴充環境
mysql-connector-python純 Python✅ 完整支援❌ API 差異較大🥉 較慢Oracle 官方維護官方支援需求、無 C 編譯器
CyMySQLPyMySQL + C 加速✅✅介於兩者間較少更新折中方案

二、安裝與基本用法

1. mysqlclient(推薦首選)

# Linux 需系統依賴
# Ubuntu/Debian: apt-get install python3-dev default-libmysqlclient-dev build-essential
# CentOS/RHEL: yum install python3-devel mysql-devel gcc

pip install mysqlclient
import MySQLdb
conn = MySQLdb.connect(host='localhost', user='root', passwd='123', db='test', charset='utf8mb4')
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print(cursor.fetchone())
conn.close()

2. PyMySQL(純 Python、易部署)

pip install PyMySQL
import pymysql
# 透明替換 MySQLdb(選用)
pymysql.install_as_MySQLdb()
import MySQLdb  # 實際使用 PyMySQL

conn = pymysql.connect(host='localhost', user='root', password='123', db='test', charset='utf8mb4',
                       cursorclass=pymysql.cursors.DictCursor)
with conn.cursor() as cur:
    cur.execute("SELECT * FROM users WHERE id=%s", (1,))
    print(cur.fetchone())
conn.close()

3. mysql-connector-python(官方)

pip install mysql-connector-python
import mysql.connector
conn = mysql.connector.connect(host='localhost', user='root', password='123', database='test')
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print(cursor.fetchone())
conn.close()

三、效能基準參考(GitHub: mysql-driver-benchmarks)

  • 單次查詢延遲:mysqlclient < PyMySQL < mysql-connector-python
  • 高併發吞吐:mysqlclient 顯著領先(C 層無 GIL 限制)
  • 記憶體佔用:mysqlclient < 純 Python 驅動

四、避坑指南

  1. Windows 安裝 mysqlclient 失敗:預編譯 wheel 從 Gohlke 下載 mysqlclient‑x.x.x‑cp3x‑win32/amd64.whl 直接 pip install。
  2. PyMySQL 協程支援:配合 eventlet.monkey_patch() 可實現非阻塞 IO,OpenStack 生產驗證通過。
  3. 連接池:生產必須搭配 DBUtils、SQLAlchemy pool 或 HikariCP(透過 JayDeBeApi),避免頻繁建連。
  4. 字元集:統一指定 charset='utf8mb4',支援 emoji 與完整 Unicode。

選型建議:

  • 🏆 首選 mysqlclient:效能最強、相容性最好、Django/Flask-SQLAlchemy 官方推薦。
  • 🔧 次選 PyMySQL:無法編譯 C 擴充(如某些容器、Windows 無 VC++)、需 gevent/eventlet 協程支援時。
  • 🏢 特定場景 mysql-connector-python:企業要求 Oracle 官方支援、或需 X Protocol/Document Store 功能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved