python - 如何在 Linux 服务器中将 Python、Oracle 11g 与 cx_Oracle 连接起来?

标签 python linux oracle11g server cx-oracle

我在 linux 服务器上的 oracle 安装文件夹是“/lib/oracle/11.2/client64/lib”
~/.bash_profile 中的设置变量是

ORACLE_HOME=/usr/lib/oracle/11.2/client64
LD_LIBRARY_PATH=$ORACLE_HOME/lib

export ORACLE_HOME
export LD_LIBRARY_PATH

此外,文件夹“/usr/lib/oracle/11.2/client64/lib”中的链接

ls -al|grep libclntsh.so

## Results are:
libclntsh.so -> libclntsh.so.11.1
libclntsh.so.10.1 -> /oracle/app/pracle/product/11.2.0/lib/libclntsh.so
libclntsh.so.11.1

在 python 中

os.environ['ORACLE_HOME']
os.environ['LD_LIBRARY_PATH']

## Results are:
'/usr/lib/oracle/11.2/client64'
'/usr/lib/oracle/11.2/client64/lib'

import cx_Oracle ## This Part is ok

但是,这段代码是错误的

cx_Oracle.clientversion()
## or 
dsn = cx_Oracle.makedsn('ip',port,'SID')
conn = cx_Oracle.connect(user='uid',password='pwd',dsn=dsn)

## Above Code Results:
DatabaseError:Error while trying to retrieve text for error ORA-01804

我怀疑我的文件夹“/etc/ld.conf.d”没有“oracle-instantclient.conf”文件。
这个文件夹只有“mariadb-x86x64.conf”
ip、端口、SID和userid、密码全部正确!

我在 linux 服务器中的 oracle 连接设置有什么问题?

最佳答案

对不起。是我的错。
我只是更改了 ORACLE_HOME 和 LD_LIBRARY_PATH,它正在运行。

os.environ["ORACLE_HOME"] = 'oracle/app/oracle/product/11.2.0'
os.environ["LD_LIBRARY_PATH"] = 'oracle/app/oracle/product/11.2.0/lib'
conn = oci.connect('ID/pw@localhost:port/SID')

解决了。

关于python - 如何在 Linux 服务器中将 Python、Oracle 11g 与 cx_Oracle 连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55352859/

相关文章:

python - 我想通过在我的数据框中添加 2 个连续的列来插入新列

python - Pandas ,避免数据透视表中的层次结构

oracle11g - Oracle 存储过程性能

java - 在 JDeveloper 11g 中找不到 mySQL 驱动程序类

java - 连接oracle 11g与java 8(eclipse)

Python 点对点聊天(套接字)

python - 属性错误 : 'Tokenizer' object has no attribute 'oov_token' in Keras

c++ - Message Queue 不断发送/接收垃圾

linux - 我如何在 ubuntu 中使用 CMake 宏

linux - 什么大小的文件夹显示 ls -la