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

내 Windows CMD에서 qmake 명령이 인식되지 않기 때문에 어느 쪽도 할 수 없습니다.

폴더 안에 libpq.dll과 libpq.lib도 복사해 보았습니다.

C:\Users\Raknaros\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyQt6\ Qt6\plugins\sqldrivers 및 내 .py 파일이 있는 폴더 내부

그리고 드라이버는 여전히 작동하지 않습니다.

종속성 워커를 테스트 중입니다. 여기에 이미지를 남겨둡니다.의존성 워커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앱에서 찾을 수 있는 폴더에 복사하세요.

반면에 종속성을 찾을 수 없다는 문제가 있고 Postgres 디렉터리를 시스템에 libpq.dll추가하려고 시도한 경우 해당 방법이 먼저 작동했을 것입니다.bin%PATH%

답변2

나에게 도움이 된 것은 Windows용 PostgreSQL ODBC 드라이버를 설치하는 것이었습니다. 버전 10은 작동하지만 최신 버전이 PyQt에서 작동하는지 확실하지 않습니다.

또한 시스템 경로에 올바른 bin 폴더를 추가해야 합니다. 나에게는 그것이 있었다

C:\Program Files\psqlODBC\1000\bin

관련 정보