Controlador PyQt6 QPSQL no cargado

Controlador PyQt6 QPSQL no cargado

Estoy intentando usar SQLTableModel de PyQt6 (instalado con pip) en Python 3.11. Para esto necesito conectarme a mi base de datos Postgresql 13 (alojada en AWS) usando el controlador QPSQL de PyQt6.

El problema está en este paso, cuando intento ejecutar la apertura desde la base de datos falla indicando que:

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

El código que utilizo para la prueba es el siguiente:

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())

Podría pensar que el problema radica en la instancia QCoreApplication requerida; sin embargo, añadiendo

app = QCoreApplication(sys.argv)

el mismo mensaje resulta sin la última línea, es decir

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

Probé una solución que menciona agregar variables de entorno a la ruta de la carpeta Lib y Bin de Postgresql, solución mencionada en este enlacehttps://www.pythonguis.com/faq/postgres-pyqt5-windows-driver-not-loaded/ en variables de usuario y de sistema dos veces sin éxito.

Leí en la documentación de Qt una sección que dice "Cómo crear el complemento QPSQL en Windows" en este enlacehttps://doc.qt.io/qt-5/sql-driver.htmlque indica lo siguiente: Instale las bibliotecas de desarrollador de PostgreSQL adecuadas para su compilador. Suponiendo que PostgreSQL se instaló en C:\psql, cree el complemento de la siguiente manera:

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

Lo cual tampoco puedo hacer ya que el comando qmake no se reconoce en mi CMD de Windows.

También intenté copiar libpq.dll y libpq.lib dentro de la carpeta.

C:\Users\Raknaros\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyQt6\ Qt6\plugins\sqldrivers y dentro de la carpeta donde está mi archivo .py

Y el conductor sigue sin funcionar.

Estoy probando Dependency Walker, les dejo aquí la imagenCaminante de dependenciaque aparece al escanear el archivo qsqlpsql.dll, hasta donde puedo ver hay muchas dependencias no encontradas.

No tengo idea de qué puedo hacer para que el controlador funcione y termine mi aplicación de escritorio con PyQt6, esta situación es desesperada, espero que puedan ayudarme a cargar el controlador QPSQL por favor.

Me gustaría aplicar la compilación descrita en este enlace.https://doc.qt.io/qt-6.2/sql-driver.html, pero no sé cómo, ¿podrían ayudarme con un ejemplo o una descripción exacta?

Mi configuración es: Windows 10 64 Python 3.11 PyQt6

Respuesta1

También intenté copiar libpq.dll y libpq.lib dentro de la carpeta.

Eso no debería funcionar a menos que libpq.dlltambién se copien las dependencias de. En una instalación de PostgreSQL, encontrará un montón de archivos DLL en el bin/directorio donde se encuentran los archivos binarios del lado del cliente ( psql.exe,, etc...). pg_dump.exeCopie todos estos *.dllarchivos libpq.dllen una carpeta desde donde su aplicación pueda encontrarlos.

Por otro lado, si el problema es que libpq.dllno se pueden encontrar las dependencias de y has intentado agregar el bindirectorio de Postgres al sistema %PATH%, ese método debería haber funcionado en primer lugar.

Respuesta2

Lo que funcionó para mí fue instalar el controlador ODBC de PostgreSQL para Windows. La versión 10 funciona y no tengo claro si las versiones más nuevas funcionan con PyQt.

También deberá agregar la carpeta bin correcta a la ruta de su sistema. Para mi fue en

C:\Program Files\psqlODBC\1000\bin

información relacionada