在做一个qt登陆注册界面时,不得不使用数据库的连接,但是一直连接失败,记录一下个人成功解决的方法,希望能帮到各位。我的版本为Qt5 Version Number is: 5.15.2,PyQt5 Version is: 5.15.10,Mysql 8.0。
参考:
①PyCharm+PyQt5(5.15.2)+mysql, PyQt5连接mysql,踩坑与解决办法
②PyQt5连接Mysql数据库显示Driver not loaded
1.连接数据库
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
print("支持的驱动")
for driver in QSqlDatabase.drivers():
print(driver)
db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName("localhost") # 数据库主机名
db.setUserName("自己的用户名") # 数据库用户名
db.setPassword("自己的密码") # 数据库密码
db.setDatabaseName("要连接的数据库名称") # 数据库名称
db.setPort(3306) # 数据库端口号
if not db.open():
print(db.lastError().text())
else:
print("已连接")
首先尝试连接,如果“已连接”,就可以不用往后看了,我就一直显示“driver not loaded”,然后按后面步骤继续。
原因分析:
可以参考链接①中的步骤很详细,我参考文中方法并不能解决,然后从评论区猜测问题出在版本和驱动不对应。
解决方案:
首先查看自己qt版本,然后下载对应版本的驱动,添加到对应文件中。
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_())
输出
Qt5 Version Number is: 5.15.2
PyQt5 Version is: 5.15.10
Sip Version is: 6.7.12
以我的为例,然后去这个网址下载,找到自己对应的版本,比如我的版本为5.15.2,对应去找然后下载。
下载过后解压文件,有两个步骤:
1.将libmysql.dll复制到自己的使用环境PyQt5\Qt5\bin(我的为D:\Anaconda3\envs\pytorch\Lib\site-packages\PyQt5\Qt5\bin)的文件夹下即可。
2.打开sqldrivers文件夹,将其中的两个dll文件都复制到自己的使用环境PyQt5\Qt5\plugins\sqldrivers(我的为D:\Anaconda3\envs\pytorch\Lib\site-packages\PyQt5\Qt5\plugins\sqldrivers)文件夹下即可。
最后再测试代码连接为“已连接”。