【问题标题】:Using cx_oracle when muliple Oracle clients in the path当路径中有多个 Oracle 客户端时使用 cx_oracle
【发布时间】:2015-07-04 02:58:26
【问题描述】:
我正在使用 cx_Oracle 访问 Oracle 数据库一段时间,它工作正常。现在我的同事想要运行我的脚本,但我们遇到了 cx_Oracle 的问题。尝试连接数据库时出现错误:InterfaceError:无法获取 Oracle 环境句柄。
我在 stackoverflow 帖子上读到,可能的错误是在路径上找到了多个 oci.dll 文件。在我们的例子中,我们安装了两个即时客户端,我安装了即时客户端 12,还有另一个非常旧的安装,它被其他一些应用程序使用。如何告诉 Python 使用哪个即时客户端?
她使用的是 Windows XP,我安装了她的即时客户端 12、python 3.4 和 cx_oracle 5.2,均为 32 位。
【问题讨论】:
标签:
python
oracle
cx-oracle
【解决方案1】:
您需要确保PATH 和ORACLE_HOME 环境变量指向相同的Oracle 客户端安装。对于PATH(您暗示可能包含多个Oracle 客户端安装),您需要确保首先出现您希望使用的那个。
您可能希望将 Python 脚本包装在一个批处理文件中,以确保在启动解释器之前正确设置这些变量,而不是依赖于这些环境变量的系统范围设置。例如,假设您将 Oracle 12.1 即时客户端安装到 C:\Oracle\instantclient_12_1:
@ECHO OFF
SET ORACLE_HOME=C:\Oracle\instantclient_12_1
SET PATH=C:\Oracle\instantclient_12_1;%PATH%
python path_to_my_script.py