在第一次用PyQt5的 QSqlDatabase.addDatabase 连接mysql的时候,可能会出现Driver not loaded的情况,如下:
from PyQt5.QtSql import QSqlQuery, QSqlDatabase
from PyQt5.QtWidgets import QApplication
import sys
app = QApplication(sys.argv)
try:
db = QSqlDatabase.addDatabase('QMYSQL')
db.setHostName(ip)
db.setPort(3306)
db.setDatabaseName('cat')
db.setUserName('root')
db.setPassword('password')
if db.open():
print("打开了")
else:
print(db.lastError().text())
不出所料,连接失败。如果连接成功,恭喜你,直接叉掉就好。
2.查询支持的数据库驱动
利用下述代码查询目前所支持的数据库驱动
from PyQt5.QtSql import QSqlDatabase
print(QSqlDatabase.drivers())
['QSQLITE', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']
输出结果无 'QMYSQL', 'QMYSQL3'
说明缺少libmysql.dll 文件首先这个问题是肯定缺少DLL导致,有人说F:\Program Files\MySQL\MySQL Server 8.0\lib去找到这个DLL后,将libmysql.dll 复制到F:\anaconda\envs\pytorch\Lib\site-packages\PyQt5\Qt\bin,其实这种方法不正确哦,我们需要到
https://github.com/thecodemonkey86/qt_mysql_driver/releases
找到对应pyqt5版本文件,比如我的pyqt5==5.13.2 mysql==8.0.32版本可以下
之后将dll复制到 F:\anaconda\envs\pytorch\Lib\site-packages\PyQt5\Qt\bin,而且libssl-1_1-x64.dll和libcrypto-1_1-x64.dll都要复制才行,提示覆盖可以选择跳过。
注意:python的版本如果是32位的,那就必须要找32位的libmysql文件,不然待会进行了第二步也会报Driver not loaded错误。
通过以下代码查看版本信息
from PyQt5.QtCore import QT_VERSION_STR
from PyQt5.Qt import PYQT_VERSION_STR
print('Qt 版本:', QT_VERSION_STR)
print('PyQt 版本:', PYQT_VERSION_STR)