You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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配套的加密库,缺一不可

二、去哪找这些文件

有两种最靠谱的方式:

  1. 从本地MySQL安装目录提取
    打开你的MySQL8安装路径(默认是C:\Program Files\MySQL\MySQL Server 8.0\lib),里面直接就能找到这三个文件。记得核对位数——如果你的Python是32位,而装的是64位MySQL,那得去MySQL官网下载32位的Connector/C,不然位数不匹配照样用不了。
  2. 下载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

火山引擎 最新活动