简体   繁体   English

如何在Linux服务器中将Python,Oracle 11g与cx_Oracle连接?

[英]How to Connect Python, Oracle 11g with cx_Oracle in linux server?

My oracle install folder in linux server is "/lib/oracle/11.2/client64/lib" 我在linux服务器中的oracle安装文件夹是“ /lib/oracle/11.2/client64/lib”
setting variables in ~/.bash_profile are 在〜/ .bash_profile中设置变量是

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

export ORACLE_HOME
export LD_LIBRARY_PATH

Also, link in folder "/usr/lib/oracle/11.2/client64/lib" 另外,链接文件夹“ /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

And in python 并在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

But, This code are Error 但是,此代码是错误的

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

I doubt that my folder "/etc/ld.conf.d" has not "oracle-instantclient.conf" file. 我怀疑我的文件夹“ /etc/ld.conf.d”没有“ oracle-instantclient.conf”文件。
This folder only has "mariadb-x86x64.conf" 该文件夹仅具有“ mariadb-x86x64.conf”
ip, port, SID and userid, password all correct! IP,端口,SID和用户ID,密码均正确!

What's wrong my oracle connect setting in linux server? 我在linux服务器中的oracle连接设置有什么问题?

Sorry. 抱歉。 It's my fault. 我的错。
I just change the ORACLE_HOME & LD_LIBRARY_PATH and It's running. 我只是更改了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')

Solved it. 解决了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM