PostgreSQL,QSqlDatabase:无法打开数据库

时间:2018-07-04 18:28:00

标签: python postgresql pyqt pyqt5 qsqldatabase

我的系统:Windows 10 Pro 16299,Qt,PyQt 5.11.2,Python 3.6,PostgreSql 10

我试图在我的GUI中使用QTableView / QSqlTableModel来处理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屏幕截图

1 个答案:

答案 0 :(得分:0)

找到Postgres驱动程序:

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

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

使用依赖项遍历器将此文件加载,并检查是否可以找到libpq.dll及其所有依赖项。

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

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

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