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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值