PyQt6 QPSQL 驅動程式未載入

PyQt6 QPSQL 驅動程式未載入

我正在嘗試在 Python 3.11 中使用 PyQt6(與 pip 一起安裝)中的 SQLTableModel。為此,我需要使用 PyQt6 中的 QPSQL 驅動程式連接到我的 Postgresql 13 資料庫(託管在 AWS 上)。

問題出在這一步中,當我嘗試執行從資料庫開啟時,它失敗,表示:

QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QPSQL
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins

我用於測試的程式碼如下:

db = QSqlDatabase.addDatabase("QPSQL")
db.setHostName('host')
db.setDatabaseName("dbname")
db.setUserName('user')
db.setPassword('pass')
db.setConnectOptions("-c debug_print_parse=on -c debug_print_rewritten=on -c debug_print_plan=on -c debug_pretty_print=on")

if not db.open():
    print("Error al abrir la base de datos:",db.lastError().text())

您可能認為問題出在所需的 QCoreApplication 實例上;但是,透過添加

app = QCoreApplication(sys.argv)

相同的訊息結果沒有最後一行,即

QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QPSQL 

我嘗試過一種解決方案,提到將環境變數新增至 Postgresql 的 Lib 和 Bin 資料夾路徑,此連結中提到的解決方案https://www.pythonguis.com/faq/postgres-pyqt5-windows-driver-not-loaded/ 在使用者和系統變數中兩次均未成功。

我在 Qt 文件中讀到此連結中的「如何在 Windows 上建立 QPSQL 插件」的部分https://doc.qt.io/qt-5/sql-driver.html它指示以下內容:為您的編譯器安裝適當的 PostgreSQL 開發人員程式庫。假設 PostgreSQL 安裝在 C:\psql 中,建置插件如下:

cd C:\Users\Raknaros\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyQt6\Qt6\plugins\sqldrivers
qmake -- PSQL_INCDIR=C:\Program Files\PostgreSQL\13\include
 PSQL_LIBDIR=C:\Program Files\PostgreSQL\13\lib
nmake sub psqlcmake
nmake install

我也無法做到這一點,因為 qmake 命令在我的 Windows CMD 中無法辨識。

我還嘗試將 libpq.dll 和 libpq.lib 複製到資料夾內

C:\Users\Raknaros\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyQt6py6\plugins 在我所在的資料夾.

而且驅動程式仍然無法運作。

我正在測試 Dependency Walker,我將圖像留在這裡依賴步行者掃描 qsqlpsql.dll 檔案時出現的信息,據我所知,有很多依賴項未找到。

我不知道我能做些什麼來讓驅動程式工作並用 PyQt6 完成我的桌面應用程序,這種情況很絕望,我希望你能幫我加載 QPSQL 驅動程式。

我想應用此連結中描述的編譯https://doc.qt.io/qt-6.2/sql-driver.html,但我不知道如何,請您幫我舉個例子或準確的描述。

我的設定是: Windows 10 64 Python 3.11 PyQt6

答案1

我還嘗試將 libpq.dll 和 libpq.lib 複製到資料夾內

libpq.dll除非也複製了的依賴項,否則這應該不起作用。在 PostgreSQL 安裝中,您將在bin/客戶端二進位檔案( 、 等)所在的目錄psql.exepg_dump.exe找到一堆 DLL 檔案。將所有這些*.dll檔案複製libpq.dll到應用程式可以找到它們的資料夾中。

另一方面,如果問題是libpq.dll找不到 的依賴項,並且您已嘗試將 Postgresbin目錄新增至系統中%PATH%,那麼該方法首先應該有效。

答案2

對我有用的是安裝適用於 Windows 的 PostgreSQL ODBC 驅動程式。版本 10 可以工作,但我不清楚新版本是否可以與 PyQt 一起使用。

您還必須將正確的 bin 資料夾新增至系統路徑。對我來說是在

C:\Program Files\psqlODBC\1000\bin

相關內容