解决PySide2/PyQt5连接mysql数据库出现的“QMYSQL driver not loaded”
在使用PySide2/PyQt5连接mysql数据库时,经常会有人遇到“QMYSQL driver not loaded”的情况。解决这个问题我们得分情况处理:
(1)PySide2/PyQt5版本≤5.12
(2)PySide2/PyQt5版本>5.12
(一)对应于第一种情况(PySide2/PyQt5版本≤5.12)
测试代码如下:
1 from PySide2.QtSql import QSqlDatabase 2 from PySide2.QtCore import QCoreApplication 3 4 app = QCoreApplication() 5 db = QSqlDatabase.addDatabase('QMYSQL') 6 db.setHostName('localhost') 7 db.setUserName('test_user') 8 db.setPassword('123456') 9 db.setDatabaseName('world') 10 db.open() 11 print(db)
在命令行运行该python脚本,错误信息如下:

可以看到,在可用的驱动列表中是有"QMYSQL”的,出现此问题的原因是MYSQL驱动没有加载成功,只需要在本机mysql的安装位置找到libmysql.dll文件,例如本机路径为:“G:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.dll",并将此文件拷贝至上面脚本的同目录下,再次运行,信息如下:

可以看到,已经成功连接到mysql数据库。
(二)对应于第二种情况(PySide2/PyQt5版本>5.12)
在命令行运行上面的测试代码,错误信息如下:

注意,可用的驱动列表中没有QMYSQL,说明缺少驱动,打开PySide2目录\PySide2\plugins\sqldrivers,发现只有如下3个:

这是因为,从PySide2 5.12之后,不再提供mysql的驱动,那么我们把5.12的驱动放到里面行不行呢,我们把5.12的”qsqlmysql.dll“放到5.15的sqldrivers文件夹下,同样的把libmysql.dll拷贝至脚本同一目录,运行脚本,提示如下:

可以看到,版本不同,不兼容。
所以,我们要么选择使用qt5.12,要么就需要自己编译5.15版本的mysql驱动(当然使用别人编译好的也行),将5.15的驱动文件放至\PySide2\plugins\sqldrivers下后,运行脚本

可以看到,能够成功连接了。
那么,怎样编译5.15的mysql驱动呢?
首先,电脑上需要安装qt
然后,使用Qt Creator打开目录“F:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro”项目

根据本机mysql安装的实际位置添加上图中两行,然后进行build(切记,如果你是在windows下使用PySide2,那么编译器一定要选择msvc,不能使用mingw),编译成功后在../mysql/lib目录下就可以看到

这个qsqlmysql.dll文件就是我们所需要的

浙公网安备 33010602011771号