我正在尝试使用cx_Oracle模块连接到数据库我收到以下错误
server_IP = ipaddress:1221/xyz
try:
db = cx_Oracle.connect('username', 'password', server_IP)
print db
except cx_Oracle.DatabaseError as e:
error, = e.args
if error.code == 1017:
print('Please check your credentials.')
else:
print('Database connection error: %s'.format(e))
raise
cx_Oracle.InterfaceError:无法获取Oracle环境句柄
我的问题是我需要在linux中安装任何oracle客户端或如何在linux中配置它以便我不会收到此错误。请帮忙 linux中使用cx_Oracle模块
需要哪些前提条件答案 0 :(得分:1)
请检查您对cx_Oracle.connect
的来电语法。它需要用户名,密码和DSN或一个包含所有内容的参数。
例如
con = cx_Oracle.connect('username/password@ipaddress/xyz')
或构建完整的DSN:
ip = 'ipaddress'
port = 1221
SID = 'xyz'
dsn_tns = cx_Oracle.makedsn(ip, port, SID)
db = cx_Oracle.connect('username', 'password', dsn_tns)
答案 1 :(得分:0)
回答第一个问题:是的,您需要在计算机上安装Oracle客户端才能使用cx_Oracle。您可以安装完整的客户端,但使用即时客户端要容易得多。如果您使用的是基于RPM的Linux发行版,则可以使用RPM来简化操作。到这里寻找即时客户:
http://www.oracle.com/technetwork/database/features/instant-client/index.html
但是,您收到的错误表明存在配置问题。确保您使用的Oracle客户端和您使用的cx_Oracle版本彼此兼容。换句话说,如果Python是64位,那么您的Oracle客户端也应该是64位。如果Python是32位,则Oracle客户端应为32位。检查环境变量ORACLE_HOME(如果使用完整的Oracle客户端),PATH和LD_LIBRARY_PATH。这是使用即时客户端RPM的优势之一 - 在编译时不需要环境变量,在运行时也不需要!
最后一条评论:看起来您正在使用EZ Connect语法连接到数据库。侦听器的默认端口是1521,而不是1221.如果您使用默认端口,则可以简单地省略该部分(换句话说,如Martin所述的ipaddress / xyz)。