Windows下PyQt5连接MySQL提示QMYSQL驱动未加载问题求助
解决PyQt5.9 + Python3.6环境下QMYSQL驱动加载失败问题
刚踩过几乎一模一样的坑!你遇到的QSqlDatabase: QMYSQL driver not loaded问题,本质就是PyQt的QMYSQL驱动依赖MySQL的C连接器库,但PyQt本身没打包这些库,得手动补。结合你的环境(Win10、MySQL8、Python3.6、PyQt5.9),给你梳理清楚:
一、必须补的DLL文件
你需要这三个核心文件(注意位数必须和你的Python一致——32位Python拿32位DLL,64位就拿64位):
libmysql.dll:MySQL客户端的核心库,驱动靠它和MySQL通信libssl-1_1-x64.dll(64位)/libssl-1_1.dll(32位):MySQL8默认强制SSL连接,这个是SSL依赖库libcrypto-1_1-x64.dll(64位)/libcrypto-1_1.dll(32位):和SSL配套的加密库,缺一不可
二、去哪找这些文件
有两种最靠谱的方式:
- 从本地MySQL安装目录提取:
打开你的MySQL8安装路径(默认是C:\Program Files\MySQL\MySQL Server 8.0\lib),里面直接就能找到这三个文件。记得核对位数——如果你的Python是32位,而装的是64位MySQL,那得去MySQL官网下载32位的Connector/C,不然位数不匹配照样用不了。 - 下载MySQL Connector/C:
去MySQL官网下载和你MySQL版本、Python位数匹配的Connector/C包,解压后在lib(32位)或lib64(64位)目录里就能拿到这三个DLL。
三、放对路径才能被识别
把这三个DLL放到以下任意一个Python/Qt能自动找到的路径里就行,推荐优先级从高到低:
- PyQt5的Qt运行目录:
C:\Python36\Lib\site-packages\PyQt5\Qt\bin(Qt加载驱动时会优先扫这个目录,最稳妥) - Python根目录:
C:\Python36(Python的环境变量里默认包含这个路径) - 你的脚本所在目录:直接和你的
.py文件放一块,简单粗暴,适合测试 - Python的Scripts目录:
C:\Python36\Scripts
四、快速验证驱动是否生效
可以加一段测试代码确认,比直接跑你的脚本更容易定位问题:
from PyQt5.QtSql import QSqlDatabase # 先看可用驱动列表 print("当前可用驱动:", QSqlDatabase.drivers()) # 尝试建立连接 db = QSqlDatabase.addDatabase('QMYSQL') db.setHostName('localhost') db.setDatabaseName('你的数据库名称') db.setUserName('MySQL用户名') db.setPassword('MySQL密码') db.setPort(3306) if db.open(): print("数据库连接成功!") db.close() else: print("连接失败,错误信息:", db.lastError().text())
额外避坑提醒
- 位数必须完全匹配:Python3.6、PyQt5.9、MySQL8三者要么全是32位,要么全是64位,只要有一个不匹配,驱动肯定加载失败,这个是最常见的坑!
- MySQL8的认证问题:MySQL8默认用
caching_sha2_password认证插件,PyQt5.9的QMYSQL驱动可能不兼容。解决办法要么把MySQL用户的认证方式改成mysql_native_password,要么在连接时加一行:db.setConnectOptions("MYSQL_ENABLE_CLEARTEXT_PLUGIN=1") - fbs打包注意:如果后续用fbs打包程序,一定要把这三个DLL添加到打包资源里,不然打包后的exe还是会找不到驱动。
内容的提问来源于stack exchange,提问作者Enrique Alberto Perez Delgado




