PyQt5连接PostgreSQL时驱动加载失败问题求助
解决PyQt5连接PostgreSQL时的「Driver not loaded」错误
嘿,我刚学PyQt5的时候也碰到过一模一样的问题,别慌,这个错误基本都是驱动加载环节出了问题,咱们一步步来排查解决:
第一步:先确认环境位数匹配
首先得保证你的Python36、PyQt5、PostgreSQL三者的位数完全一致——要么全是64位,要么全是32位。比如你装的是64位的Python36,那PostgreSQL也得装64位版本,不然驱动根本没法兼容。
第二步:把PostgreSQL的bin目录加到环境变量里
Qt的PostgreSQL驱动(qsqlpsql.dll)依赖PostgreSQL自带的libpq.dll文件,要是系统找不到这个文件,驱动就会加载失败。你需要把PostgreSQL安装目录下的bin文件夹路径添加到系统的PATH环境变量里:
- 找到你的PostgreSQL安装路径,比如默认是
C:\Program Files\PostgreSQL\14\bin(14是版本号,换成你实际安装的版本) - 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量的
PATH里添加这个路径 - 重启你的Python编辑器或者命令行窗口,让环境变量生效
第三步:检查PyQt5的驱动文件是否存在
你可以去Python的site-packages目录里找PyQt5的驱动文件夹,路径大概是:你的Python安装目录\Lib\site-packages\PyQt5\Qt\plugins\sqldrivers,看看里面有没有qsqlpsql.dll这个文件。
- 如果没有的话,先卸载当前的PyQt5,再用pip重新安装:
pip uninstall pyqt5然后pip install pyqt5,一般最新的PyQt5包会包含常用的数据库驱动 - 要是还是没有,你可以去Qt官方下载对应版本的Qt安装包(要和你的PyQt5使用的Qt版本匹配,比如PyQt5.15对应Qt5.15),安装后在Qt的安装目录里找到
sqldrivers文件夹下的qsqlpsql.dll,复制到PyQt5的sqldrivers目录里
第四步:改进测试代码,更准确排查问题
你原来的代码只是初始化了驱动,还没尝试连接数据库,补充连接参数再测试能更清晰地定位问题:
from PyQt5 import QtSql # 初始化PostgreSQL驱动 db = QtSql.QSqlDatabase.addDatabase("QPSQL") # 设置连接参数(换成你自己的数据库信息) db.setHostName("localhost") db.setDatabaseName("test_db") # 你的数据库名 db.setUserName("postgres") # 你的用户名 db.setPassword("123456") # 你的密码 db.setPort(5432) # PostgreSQL默认端口 # 尝试打开连接 if db.open(): print("数据库连接成功啦!") else: print(f"连接失败:{db.lastError().text()}")
按照这几步来,基本就能解决驱动加载的问题了。
内容的提问来源于stack exchange,提问作者Enric
相关产品推荐
相关产品推荐

