我正在嘗試在 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.exe
中pg_dump.exe
找到一堆 DLL 檔案。將所有這些*.dll
檔案複製libpq.dll
到應用程式可以找到它們的資料夾中。
另一方面,如果問題是libpq.dll
找不到 的依賴項,並且您已嘗試將 Postgresbin
目錄新增至系統中%PATH%
,那麼該方法首先應該有效。
答案2
對我有用的是安裝適用於 Windows 的 PostgreSQL ODBC 驅動程式。版本 10 可以工作,但我不清楚新版本是否可以與 PyQt 一起使用。
您還必須將正確的 bin 資料夾新增至系統路徑。對我來說是在
C:\Program Files\psqlODBC\1000\bin