目錄
- 一、問題描述
- 二、原因分析
- 三、解決方案
- ? 推薦:安裝 `pymysql`(純 Python,跨平臺,安裝簡單)
- ? 可選:安裝 `mysqlclient`(更快,但需要本地編譯環境)
- ? 總結
- 四、mysql-connector-python為什么不行
一、問題描述
在python項目中連接數據庫,剛開始用的mysql-connector-python,切換到peewee后連接錯誤
peewee.ImproperlyConfigured: MySQL driver not installed!
二、原因分析
peewee不附帶安裝數據庫驅動,需要手動安裝,如果連接其他數據庫則需要安裝其他數據庫對應的驅動
三、解決方案
? 推薦:安裝 pymysql
(純 Python,跨平臺,安裝簡單)
pip install pymysql
uv add pymysql
然后在你的項目入口處(比如 main.py
或 __init__.py
)加上:
import pymysql
pymysql.install_as_MySQLdb()
安裝完成后,運行以下代碼測試:
普通版
from peewee import MySQLDatabase
import pymysql
pymysql.install_as_MySQLdb() # 將 PyMySQL 作為 MySQLdb 使用db = MySQLDatabase('database_name', user='username', password='password', host='localhost', port=3306)
連接池版
from playhouse.pool import PooledMySQLDatabase
import pymysqlpymysql.install_as_MySQLdb() # 將 PyMySQL 作為 MySQLdb 使用db = PooledMySQLDatabase('test', user='root', password='root', host='127.0.0.1', port=3306)
print(db.connect())
顯示True則說明連接成功
? 可選:安裝 mysqlclient
(更快,但需要本地編譯環境)
# Linux / macOS
pip install mysqlclient# Windows 上推薦使用預編譯的 wheel:
pip install mysqlclient?1.4.6?cp39?cp39?win_amd64.whl
注意:
mysqlclient
依賴本地 MySQL 開發庫,安裝可能失敗,尤其在 Windows 上。
安裝完成后,運行以下代碼測試:
Peewee 會自動使用 mysqlclient
作為 MySQL 驅動。
from peewee import MySQLDatabasedb = MySQLDatabase('database_name', user='username', password='password', host='localhost', port=3306)
? 總結
驅動 | 安裝方式 | 是否推薦 |
---|---|---|
pymysql | pip install pymysql + install_as_MySQLdb() | ? 推薦 |
mysqlclient | pip install mysqlclient | ?? 可選(需編譯) |
你只需安裝一個驅動即可解決問題。建議優先使用 pymysql
。
四、mysql-connector-python為什么不行
? 為什么 mysql-connector-python 不行?
mysql-connector-python 并不是 Peewee 支持的 MySQL 驅動。Peewee 只支持以下兩種 MySQL 驅動:
- ? PyMySQL(純 Python,跨平臺,推薦)
- ? mysqlclient(基于 C 的 libmysqlclient,性能好,但難裝)
而 mysql-connector-python 是 Oracle 官方提供的驅動,但 Peewee 沒有適配它,所以即使你安裝了,也會報錯。
喜歡的點個關注吧><!祝你永無bug!
/*_ooOoo_o8888888o88" . "88(| -_- |)O\ = /O____/`---'\____.' \\| |// `./ \\||| : |||// \/ _||||| -:- |||||- \| | \\\ - /// | || \_| ''\---/'' | |\ .-\__ `-` ___/-. /___`. .' /--.--\ `. . __."" '< `.___\_<|>_/___.' >'"".| | : `- \`.;`\ _ /`;.`/ - ` : | |\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^佛祖保佑 永無BUG
*/