PostgreSql、QSqlDatabase:无法打开数据库

PostgreSql, QSqlDatabase: Failed to open Database

我的系统:Windows10 Pro 16299,Qt,PyQt 5.11.2,Python3.6,PostgreSql 10

我尝试在我的 gui 中使用 QTableView/QSqlTableModel for 来处理 postgresql 数据。但是,我无法打开数据库。我收到错误消息“未加载驱动程序未加载驱动程序”。

重新安装Qt、PostgreSql、PyQt,问题未解决。我还尝试了“Dependency Walker”来查找丢失的 dll,但无法使用给定的信息。

你知道如何解决这个问题吗?

作为替代方案:是否可以将 QTableView/QSqlTableModel 与 psycopg2(而不是 QSqlDatabase)一起使用?

非常感谢您!


from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel  
from PyQt5.QtWidgets import QTableView, QApplication  
import sys

if __name__ == '__main__':

  app = QApplication(sys.argv)  
  db = QSqlDatabase.addDatabase("QPSQL")   
  db.setHostName("localhost")  
  db.setPort(5432)  
  db.setDatabaseName("Test")  
  db.setUserName("postgres")  
  db.setPassword("xxxxx")  
  if (db.open() == False):  
    QMessageBox.critical(None, "Error", db.lastError().text())   
  else:  
    Print("Connected")

Dependency Walker 截图

找到 Postgres 驱动程序:

C:\Python\Python36\Lib\site-packages\PyQt5\Qt\plugins\sqldrivers\qsqlpsql.dll

其中 C:\Python\Python36 是您的 Python 安装目录。

使用 dependency walker 加载此文件并检查是否可以找到 libpq.dll 及其所有依赖项。

通常必须在系统路径上设置两个 Postgres 文件夹:

C:\Program Files\PostgreSQL\bin\
C:\Program Files\PostgreSQL\lib\

dll 的版本不兼容(64 位与 32 位)可能是可能的问题之一。