解决PySide2/PyQt5连接mysql数据库出现的“QMYSQL driver not loaded”

发布时间 2023-07-25 19:15:04作者: hustmse0510

  首先,分两种情况:

  (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脚本,错误信息如下:

   出现此问题,只需要在本机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拷贝至脚本同一目录,运行脚本,提示如下:

   可以看到,版本不同,不兼容。

  所以,我们需要自己编译5.15版本的mysql驱动,或者拿来主义也行,将合适的驱动文件放至\PySide2\plugins\sqldrivers下后,运行脚本

   可以看到,能够成功连接了。