Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使QOCI驱动程序可用于PyQt5_Python_Database_Oracle_Pyqt_Driver - Fatal编程技术网

Python 如何使QOCI驱动程序可用于PyQt5

Python 如何使QOCI驱动程序可用于PyQt5,python,database,oracle,pyqt,driver,Python,Database,Oracle,Pyqt,Driver,我正在尝试使用QOCI驱动程序连接到Oracle数据库,但驱动程序不可用。对于此简单代码: from PyQt5 import QtSql QtSql.QSqlDatabase.isDriverAvailable('QOCI') 我得到False 我尝试检查路径环境设置,发现有TNS_ADMIN变量设置为文件夹,其中包含驱动程序文件oci.dll: C:\Atena\instantclient_11_2 但它仍然不可用 我尝试从Oracle站点下载驱动程序,并根据Oracle说明进行设置(

我正在尝试使用
QOCI
驱动程序连接到Oracle数据库,但驱动程序不可用。对于此简单代码:

from PyQt5 import QtSql

QtSql.QSqlDatabase.isDriverAvailable('QOCI')
我得到
False

我尝试检查
路径
环境设置,发现有
TNS_ADMIN
变量设置为文件夹,其中包含驱动程序文件
oci.dll

C:\Atena\instantclient_11_2
但它仍然不可用

我尝试从Oracle站点下载驱动程序,并根据Oracle说明进行设置(将
PATH
变量更改为新的驱动程序文件夹,复制TNSnames.ora文件等),但驱动程序仍然不可用


我希望PyQt5有可用的驱动程序,加载它,并使用它连接到Oracle数据库。

例如,在instantclient-basic-windowsXXXXX.zip中包含了OCI.DLL 假设您已将文件解压缩到

C:\ORACLE\IC\12201\instantclient_12_2 
要使其可用于其他应用程序,请在用户环境中设置

ORACLE_HOME=C:\ORACLE\IC\12201\instantclient_12_2
PATH=%PATH%;%ORACLE_HOME%
使用此设置时,任何使用OCI.DLL的应用程序都会找到它。 当然,您必须安装正确的位大小-即,如果您的应用程序是32位的,您需要安装32位即时客户端-如果它是64位的应用程序,您需要64位即时客户端

就我所知,您需要手动构建QOCI。要做到这一点,您需要明确的即时客户端SDK包

web上的Sources声明您需要包含SDK中的头文件和lib—不幸的是,QOCI看起来仍然依赖于Oracle Client 11.X—不是即时客户端,而是常规客户端

需要使用以下库(最后一个库用于客户端12.x)

定期客户

%ORACLE_HOME%\oci\lib\msvc
%ORACLE_HOME%\oci\include
在即时客户端上

%ORACLE_HOME%\sdk\lib\msvc
%ORACLE_HOME%\sdk\include
需要包括以下标题

oci.h
定期客户

%ORACLE_HOME%\oci\lib\msvc
%ORACLE_HOME%\oci\include
在即时客户端上

%ORACLE_HOME%\sdk\lib\msvc
%ORACLE_HOME%\sdk\include
不幸的是,没有太多人支持MinGW,所以我不能这么做

“configure”命令用于准备需要包括的所有内容

-sql-oci -plugin-sql-oci  

将oraociei10.dll从何处复制到何处?你能说得更具体些吗?从源代码(在Windows上)重建Qt5是否有助于解决此问题?