如何通过IP地址连接到远程服务器,TOAD,SqlDeveloper只能通过IP地址,用户名,SID和密码连接到数据库?
每当我尝试指定IP地址时,它似乎都是在本地使用它.
换句话说,如何将cx_Oracle.connect()的字符串格式化为非本地数据库?
之前的帖子列为了通过cx_Oracle模块连接到Oracle的答案,其中包含以下代码:
#!/usr/bin/python import cx_Oracle connstr='scott/tiger' conn = cx_Oracle.connect(connstr) curs = conn.cursor() curs.execute('select * from emp') print curs.description for row in curs: print row conn.close()
Kevin Horn.. 56
我喜欢这样做:
ip = '192.168.0.1' port = 1521 SID = 'YOURSIDHERE' dsn_tns = cx_Oracle.makedsn(ip, port, SID) db = cx_Oracle.connect('username', 'password', dsn_tns)
我喜欢这种方法的一个主要原因是我通常在某个地方有一个TNSNAMES.ORA文件,我可以dsn_tns
通过这样做检查对象是否会做正确的事情:
print dsn_tns
并将输出与我的TNSNAMES.ORA进行比较
我喜欢这样做:
ip = '192.168.0.1' port = 1521 SID = 'YOURSIDHERE' dsn_tns = cx_Oracle.makedsn(ip, port, SID) db = cx_Oracle.connect('username', 'password', dsn_tns)
我喜欢这种方法的一个主要原因是我通常在某个地方有一个TNSNAMES.ORA文件,我可以dsn_tns
通过这样做检查对象是否会做正确的事情:
print dsn_tns
并将输出与我的TNSNAMES.ORA进行比较
您可以在连接字符串中指定服务器,例如:
import cx_Oracle connstr = 'scott/tiger@server:1521/orcl' conn = cx_Oracle.connect(connstr)
"server"是服务器,或者IP地址(如果需要).
"1521"是数据库正在侦听的端口.
"orcl"是实例(或数据库服务)的名称.
import cx_Oracle CONN_INFO = { 'host': 'xxx.xx.xxx.x', 'port': 12345, 'user': 'user_name', 'psw': 'your_password', 'service': 'abc.xyz.com', } CONN_STR = '{user}/{psw}@{host}:{port}/{service}'.format(**CONN_INFO) connection = cx_Oracle.connect(CONN_STR)