PyCharm+PyQt5(5.15.2)+mysql, PyQt5连接mysql,踩坑与解决办法

Posted 杨书落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyCharm+PyQt5(5.15.2)+mysql, PyQt5连接mysql,踩坑与解决办法相关的知识,希望对你有一定的参考价值。

1、连接数据库代码

 db = QSqlDatabase.addDatabase('Qmysql')
 db.setHostName('localhost')
 db.setPort(3306)
 db.setDatabaseName('username')
 db.setUserName('root')
 db.setPassword('123456')
 if db.open():
     print("连接成功")
 else:
     print("连接失败")

将上面的数据库名字和密码换成自己的就行,如果这里直接打印出连接成功,那么下面可以不用看了,可以直接对数据库操作了

2、错误与解决办法

首先用下面这个代码打印下现在支持的数据库驱动

from PyQt5.QtSql import QSqlDatabase
print(QSqlDatabase.drivers())

如果是这样的['QSQLITE', 'QMYSQL', 'QMYSQL3', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7'],有'QMYSQL', 'QMYSQL3'这两个驱动,直接往后看。
如果没有就是缺少了libmysql.dll这个文件,在你的D:\\MySQL\\lib文件加下找到它,如下图一所示,然后复制到D:\\anaconda\\Lib\\site-packages\\PyQt5\\Qt5\\bin(我用的是anaconda)文件夹下,如图2所示。然后不出意外就能加载出上面所说的驱动了。

图1

图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

先用下面的代码看下自己的PyQt5的版本,我开始用的是5.15.5一直有问题,后来看网上教程都是用的5.12.1就改用5.12.1了,所以建议可以换成5.12.1。出现上面的问题是缺少qsqlmysql.dll这个扩展,可以点两个扩展下载下载,如果实在不愿意也可以直接到最后下载。注意点:我的python是64位的,mysql也是64位的。将这个扩展放入D:\\anaconda\\Lib\\site-packages\\PyQt5\\Qt5\\plugins\\sqldrivers这个地方,如图3所示。

from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QT_VERSION_STR
from PyQt5.Qt import PYQT_VERSION_STR
from sip import SIP_VERSION_STR

if __name__=='__main__':
    import sys
    app=QApplication(sys.argv)
    print("Qt5 Version Number is: 0".format(QT_VERSION_STR))
    print("PyQt5 Version is: ".format(PYQT_VERSION_STR))
    print("Sip Version is: ".format(SIP_VERSION_STR))

    sys.exit(app.exec_())

图3

然后基本上到这边就能成功连接到mysql了(我看其它博客都是这么说的),但是唉,我的就不行。一直在反复的检查版本然后,卸载在装都是不行,也不报错,直到看到了这位老哥pyqt5 QMYSQL driver not loaded,在代码上加了这两句,就能成功运行了唉,流弊
老哥的解释是`根本原因是qt用的是c++的库,加载不到驱动。用python 加载dll 让python 在上下文中能读取到驱动

import ctypes
ctypes.windll.LoadLibrary('D:/MySQL/lib/libmysql.dll')

3、链接

链接:https://pan.baidu.com/s/13xwzRL1qsyQyNwUfpzMhIw 
提取码:0dyp

以上是关于PyCharm+PyQt5(5.15.2)+mysql, PyQt5连接mysql,踩坑与解决办法的主要内容,如果未能解决你的问题,请参考以下文章

PyCharm+PyQt5(5.15.2)+mysql, PyQt5连接mysql,踩坑与解决办法

PyCharm+PyQt5(5.15.2)+mysql, PyQt5连接mysql,踩坑与解决办法

pyqt5-tools安装失败处理方法

PyCharm集成PyQt5以及使用

Pycharm+Python+PyQt5使用

Pycharm+Python+PyQt5使用