#python #database #oracle #pyqt #driver
#python #База данных #Oracle #pyqt #драйвер
Вопрос:
Я пытаюсь использовать QOCI
драйвер для подключения к базе данных Oracle, но драйвер недоступен. Для этого простого кода:
from PyQt5 import QtSql
QtSql.QSqlDatabase.isDriverAvailable('QOCI')
Я получаю False
.
Я попытался проверить PATH
настройки среды и вижу, что для TNS_ADMIN
переменной установлена папка с файлом драйвера oci.dll
:
C:Atenainstantclient_11_2
но он по-прежнему недоступен.
Я попытался загрузить драйвер с сайта Oracle, настроить его в соответствии с инструкциями Oracle (изменить PATH
переменную на новую папку драйвера, скопировать файл TNSnames.ora и т. Д.), Но драйвер по-прежнему недоступен.
Я хочу иметь драйвер, доступный для PyQt5, загрузить его и использовать для подключения к базе данных Oracle.
Ответ №1:
The OCI.DLL включен, например, в instantclient-basic-windowsXXXXX.zip Предположим, вы разархивировали файл, чтобы
C:ORACLEIC12201instantclient_12_2
чтобы сделать его доступным для других приложений, установите в пользовательской среде
ORACLE_HOME=C:ORACLEIC12201instantclient_12_2
PATH=%PATH%;%ORACLE_HOME%
с этой настройкой любое приложение, использующее OCI.DLL должен найти его.
Конечно, вы должны установить правильный размер бит — т.Е. Если ваше приложение 32-битное, вам необходимо установить 32-битный мгновенный клиент — если это 64-битное приложение, вам нужен 64-битный мгновенный клиент.
Итак, насколько я вижу, вам нужно создать QOCI вручную. Для этого вам определенно нужен пакет SDK для instant client.
Источники в Интернете утверждают, что вам необходимо включить заголовки и библиотеки из SDK — к сожалению, похоже, что QOCI все еще зависит от Oracle Client 11.X — не мгновенного клиента, а обычного клиента.
необходимо использовать следующие библиотеки (последняя предназначена для клиента 12.x)
oci.lib ociw32.lib oraocci12.lib
на обычном клиенте
%ORACLE_HOME%ocilibmsvc
на мгновенном клиенте
%ORACLE_HOME%sdklibmsvc
необходимо включить следующие заголовки
oci.h
на обычном клиенте
%ORACLE_HOME%ociinclude
на мгновенном клиенте
%ORACLE_HOME%sdkinclude
К сожалению, для MinGW нет особой поддержки, поэтому я не могу этого сделать.
команда «настроить» для подготовки всего должна включать
-sql-oci -plugin-sql-oci
Комментарии:
1. Копировать oraociei10.dll откуда и куда? Можете ли вы быть более конкретным? Может ли восстановление Qt5 из исходного кода (в Windows) помочь с этой проблемой?