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缺失该文件:
PyQt5使用QSqlDatabase类连接Mysql的坑:QMYSQL driver not loaded_第1张图片

4. 解决问题:

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

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

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

具体根据你选择的安装路径而定,主要是找到文件“libmysql.dll”:
PyQt5使用QSqlDatabase类连接Mysql的坑:QMYSQL driver not loaded_第2张图片
将该文件复制粘贴到PyQt5库的路径:

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

PyQt5使用QSqlDatabase类连接Mysql的坑:QMYSQL driver not loaded_第3张图片
第2点: 找到对应PyQt版本的“qsqlmysql.dll”,将其复制到:

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

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

pip install PyQt5==5.12.1

只有这个版本,亲测后,才发现有“qsqlmysql.dll”文件。
PyQt5使用QSqlDatabase类连接Mysql的坑:QMYSQL driver not loaded_第4张图片
那如果你更换到5.12.1版本后,依然没有这个dll,那就去这个链接吧
qsqlmysql.dll 5.12.1版本下载跳转
或者先卸载PyQt5后,再重新安装5.12.1版本:

pip uninstall PyQt5
pip install PyQt5==5.12.1

5. 解决后展示:

PyQt5使用QSqlDatabase类连接Mysql的坑:QMYSQL driver not loaded_第5张图片

你可能感兴趣的:(爬虫)