PyQt5使用QSqlDatabase类连接Mysql的坑:QMYSQL driver not loaded

PyQt5连接mysql出现QSqlDatabase: QMYSQL driver not loaded问题。

1. 问题背景:

在使用TableView展示Mysql数据时,使用了QSqlTableModel模型。
因此首先需要用PyQt5自带模块QtSql,获取Mysql数据库的连接对象。

db = QtSql.QSqlDatabase.addDatabase('QMYSQL')
db.setHostName('localhost')
db.setPort(3306)
db.setDatabaseName('zhidaodata')
db.setUserName('root')
db.setPassword('123456')

2. 出现问题:

问题详细信息:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins

3. 问题分析:

找了许多教程,大多是说缺失mysql驱动导致。
但还有另外的一个关键因素

QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

这一信息表示安装的PyQt5库,不支持“QMYSQL”导致。而不支持“QMYSQL”的根本原因是:最新版本的PyQt5没有“qsqlmysql.dll”

是的,这很坑,所以要注意查看以下路径目录:

C:\Python36\Lib\site-packages\PyQt5\Qt\plugins\sqldrivers

看是否存在“qsqlmysql.dll”,很明显安装的5.14.0版本的PyQt5缺失该文件:
在这里插入图片描述

4. 解决问题:

问题已经分析清楚,那就好办了。解决问题的步骤如下:

第1点: 安装好MySql后,进入到:

C:\Program Files\MySQL\MySQL Server 8.0\lib

具体根据你选择的安装路径而定,主要是找到文件“libmysql.dll”:
在这里插入图片描述
将该文件复制粘贴到PyQt5库的路径:

C:\Python36\Lib\site-packages\PyQt5\Qt\bin

在这里插入图片描述
第2点: 找到对应PyQt版本的“qsqlmysql.dll”,将其复制到:

C:\Python36\Lib\site-packages\PyQt5\Qt\plugins\sqldrivers

但有些坑的是,这个文件很难找。所以,只能pip老版本的PyQt5才能解决:

pip install PyQt5==5.12.1

只有这个版本,亲测后,才发现有“qsqlmysql.dll”文件。
在这里插入图片描述
那如果你更换到5.12.1版本后,依然没有这个dll,那就去这个链接吧
qsqlmysql.dll 5.12.1版本下载跳转
或者先卸载PyQt5后,再重新安装5.12.1版本:

pip uninstall PyQt5
pip install PyQt5==5.12.1

5. 解决后展示:

在这里插入图片描述

  • 11
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指尖码动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值