我安装了cx_Oracle,我可以成功导入它。但是当我尝试建立Oracle连接时,我收到了这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle
我的操作系统是MacOSX,我的ORACLE_HOME指向instantclient_11_2。
答案 0 :(得分:2)
首先是第一件事。
检查您的cx_oracle是否构建为与Oracle客户端完全相同的版本。
import cx_Oracle
cx_Oracle.clientversion()
这应该返回它期望找到的版本。
如果版本不同,则应根据正确版本重建版本。
答案 1 :(得分:2)
对于即时客户端,请勿设置ORACLE_HOME。而是按照以下说明操作:
cd $HOME
mkdir -p lib
cd lib
cp /the/location/to/instantclient_11_2/*dylib* .
ln -s libclntsh.dylib.11.1 libclntsh.dylib
如果您能够使用Instant Client 12.1,则事情会更简单
cd $HOME
mkdir -p lib
cd lib
ln -s /the/location/to/instantclient_12_1/libclntsh.dylib.12.1 libclntsh.dylib
如果您还下载并解压缩SQL * Plus软件包,则可以验证客户端安装是否正常运行。
答案 2 :(得分:1)
您是否尝试过修改连接方式?听起来你的设置正确。
请尝试以下方法(填写您自己的信息):
ip_addr = 'ip address'
port = 1521
sid = 'sid'
dsn_tns = cx_Oracle.makedsn(ip_addr, port, sid)
db = cx_Oracle.connect('username', 'password', dsn_tns)
如果这不起作用,请确保您的LD_LIBRARY_PATH
设置正确。