Драйвер PyQt6 QPSQL не загружен

Драйвер PyQt6 QPSQL не загружен

Я пытаюсь использовать SQLTableModel из PyQt6 (устанавливается с помощью pip) в Python 3.11. Для этого мне нужно подключиться к моей базе данных Postgresql 13 (размещенной на AWS) с помощью драйвера QPSQL из PyQt6.

Проблема на этом этапе: когда я пытаюсь выполнить открытие из базы данных, происходит сбой, указывающий на следующее:

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 

Я попробовал решение, в котором упоминается добавление переменных среды в путь к папкам Lib и Bin Postgresql, решение, упомянутое в этой ссылкеhttps://www.pythonguis.com/faq/postgres-pyqt5-windows-driver-not-loaded/ дважды безуспешно в пользовательских и системных переменных.

Я прочитал в документации Qt раздел «Как построить плагин QPSQL в Windows» по этой ссылке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 не распознается в моем CMD Windows.

Я также пробовал скопировать 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

А драйвер все равно не работает.

Я тестирую 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 вы найдете кучу файлов DLL в каталоге , где находятся bin/клиентские двоичные файлы ( psql.exe, , и т. д.). Скопируйте все эти файлы вместе с в папку, из которой ваше приложение сможет их найти.pg_dump.exe*.dlllibpq.dll

С другой стороны, если проблема заключается в том, что зависимости libpq.dllне могут быть найдены, и вы попытались добавить binкаталог Postgres в систему %PATH%, этот метод должен был сработать изначально.

решение2

Мне помогла установка драйвера PostgreSQL ODBC для Windows. Версия 10 работает, но я не уверен, работают ли более новые версии с PyQt.

Вам также придется добавить правильную папку bin в системный путь. Для меня это было в

C:\Program Files\psqlODBC\1000\bin

Связанный контент