Python 使用Jupyter中的cx_oracle连接到本地oracle数据库时出错
我想用cx_Oracle连接到本地数据库,但它引发了一个错误:Python 使用Jupyter中的cx_oracle连接到本地oracle数据库时出错,python,oracle,jupyter,cx-oracle,Python,Oracle,Jupyter,Cx Oracle,我想用cx_Oracle连接到本地数据库,但它引发了一个错误: DatabaseError:DPI-1047:64位Oracle客户端库无法加载:“libclntsh.so:无法打开共享对象文件:没有这样的文件或目录”。看见https://oracle.github.io/odpi/doc/installation.html#linux 如需帮助 我可以用sqlplus和sqldeveloper连接到数据库,但它不能在Jupyter中使用pythoncx\uoracle import cx_Or
DatabaseError:DPI-1047:64位Oracle客户端库无法加载:“libclntsh.so:无法打开共享对象文件:没有这样的文件或目录”。看见https://oracle.github.io/odpi/doc/installation.html#linux 如需帮助
我可以用sqlplus和sqldeveloper连接到数据库,但它不能在Jupyter中使用pythoncx\uoracle
import cx_Oracle
host = 'localhost'
port = 1521
SID = 'xe'
dsn_tns = cx_Oracle.makedsn(host, port, SID)
connection = cx_Oracle.connect('user', 'passwd', dsn_tns)
我可能把环境变量或客户端安装搞砸了吗
echo ${ORACLE_HOME};
/u01/app/oracle/product/11.2.0/xe
echo ${LD_LIBRARY_PATH};
/usr/lib/oracle/12.2/client64/lib
我在/usr/lib/oracle/12.2/client64/lib中安装了客户端
您还可以更新cx_Oracle。DPI-1047消息正在使用最新版本中更新的文本。这实际上并不能解决你的问题
保持清洁。如果您使用的是ORACLE Instant Client,请不要将ORACLE_设置为HOME
我怀疑您的环境变量没有传播到cx\ U Oracle
对于64位XE,您不需要在您的案例中安装即时客户端(因为您的cx\U Oracle消息告诉我它是64位的,因为错误是查找64位Oracle客户端)。cx_Oracle可以使用数据库库
一旦您解决了库搜索路径问题,您的连接字符串就会出现问题。您正在尝试使用旧的SID构造,但应使用。它需要设置为:
- cx_Oracle文档涵盖了安装,并且还有一个值得查看的用户指南部分
- 您还可以更新cx_Oracle。DPI-1047消息正在使用最新版本中更新的文本。这实际上并不能解决你的问题
- 保持清洁。如果您使用的是ORACLE Instant Client,请不要将ORACLE_设置为HOME
- 我怀疑您的环境变量没有传播到cx\ U Oracle
- 对于64位XE,您不需要在您的案例中安装即时客户端(因为您的cx\U Oracle消息告诉我它是64位的,因为错误是查找64位Oracle客户端)。cx_Oracle可以使用数据库库
- 一旦您解决了库搜索路径问题,您的连接字符串就会出现问题。您正在尝试使用旧的SID构造,但应使用。它需要设置为:
- cx_Oracle文档涵盖了安装,并且还有一个值得查看的用户指南部分
您可能希望使用此功能获得较新的Oracle XE 18c,您的服务名称将是
sn='xepdb1'
并且您可能希望使用此功能获得较新的Oracle XE 18c,您的服务名称将是sn='xepdb1'
sn = 'xe'
dsn_tns = cx_Oracle.makedsn(host, port, service_name=sn)