Python 使用cx\U Oracle连接到远程Oracle数据库

Python 使用cx\U Oracle连接到远程Oracle数据库,python,database,oracle,connection,cx-oracle,Python,Database,Oracle,Connection,Cx Oracle,我在我的python应用程序中使用cx\u Oracle连接到远程Oracle数据库时遇到问题。 基于大量的谷歌搜索等,我尝试了许多不同的方法来配置/制定我的连接字符串,但无论我尝试什么,几乎每次都会收到相同的错误消息 我的尝试如下所示: import cx_Oracle ip = '[IP ADDRESS]' port = [PORT] service_name = '[SERVICE NAME]' dsn = cx_Oracle.makedsn(ip, port, service_name=

我在我的
python应用程序中使用cx\u Oracle
连接到
远程Oracle数据库时遇到问题。
基于大量的谷歌搜索等,我尝试了许多不同的方法来配置/制定我的连接字符串,但无论我尝试什么,几乎每次都会收到相同的错误消息

我的尝试如下所示:

import cx_Oracle
ip = '[IP ADDRESS]'
port = [PORT]
service_name = '[SERVICE NAME]'
dsn = cx_Oracle.makedsn(ip, port, service_name=service_name)
db = cx_Oracle.connect('[USERNAME]', '[PASSWORD], dsn)

结果:数据库错误:ORA-12170:TNS:发生连接超时

import cx_Oracle
conn_str = '[USERNAME]/[PASSWORD]@[HOST IP]/[SERVICE NAME]'
conn = cx_Oracle.connect(conn_str)
import cx_Oracle
user= '[USERNAME]'
pwd = '[PASSWORD]'
host = '[HOST IP]' 
service_name = '[SERVICE NAME]'
portno = '[PORT]' 
conn = cx_Oracle.connect(user, pwd, '{}:{}/{}'.format(host,portno,service_name))
import cx_Oracle
connstr = '[USERNAME]/[PASSWORD]@[SERVICE NAME]'
conn = cx_Oracle.connect(connstr)

结果:数据库错误:ORA-12170:TNS:发生连接超时

import cx_Oracle
conn_str = '[USERNAME]/[PASSWORD]@[HOST IP]/[SERVICE NAME]'
conn = cx_Oracle.connect(conn_str)
import cx_Oracle
user= '[USERNAME]'
pwd = '[PASSWORD]'
host = '[HOST IP]' 
service_name = '[SERVICE NAME]'
portno = '[PORT]' 
conn = cx_Oracle.connect(user, pwd, '{}:{}/{}'.format(host,portno,service_name))
import cx_Oracle
connstr = '[USERNAME]/[PASSWORD]@[SERVICE NAME]'
conn = cx_Oracle.connect(connstr)

结果:数据库错误:ORA-12170:TNS:发生连接超时

import cx_Oracle
conn_str = '[USERNAME]/[PASSWORD]@[HOST IP]/[SERVICE NAME]'
conn = cx_Oracle.connect(conn_str)
import cx_Oracle
user= '[USERNAME]'
pwd = '[PASSWORD]'
host = '[HOST IP]' 
service_name = '[SERVICE NAME]'
portno = '[PORT]' 
conn = cx_Oracle.connect(user, pwd, '{}:{}/{}'.format(host,portno,service_name))
import cx_Oracle
connstr = '[USERNAME]/[PASSWORD]@[SERVICE NAME]'
conn = cx_Oracle.connect(connstr)
结果:数据库错误:ORA-12154:TNS:无法解析指定的连接标识符

我有蟾蜍安装在我的电脑上,没有任何问题,所以从来没有连接到数据库与此

你知道有什么问题吗


提前感谢

我有这个标准的连接方式

import cx_Oracle
    
host="myserver"
port=myport
sid='myservicename'
user='myuser'
password='mypassword'
sid = cx_Oracle.makedsn(host, port, service_name=sid)

connection = cx_Oracle.connect(user, password, sid, encoding="UTF-8")
cursor = connection.cursor()
cursor.execute('select 1 from dual')
而且它工作起来没有任何问题。在您的情况下,超时是非常奇怪的,它通常表示网络问题,而不是连接问题。如果使用的是
cx\U Oracle
version 8,则不需要将编码指定为UTF-8,因为它是默认编码

看看它是如何工作的

C:\python>type testconn.py
#from __future__ import print_function  # needed for Python 2.7
import cx_Oracle
import os

host="myserver"
port=myport
sid='database_service_name'
user='myuser'
password='mypassword'
sid = cx_Oracle.makedsn(host, port, service_name=sid)

connection = cx_Oracle.connect(user, password, sid, encoding="UTF-8")
cursor = connection.cursor()
cursor.execute('select 1 from dual')

for row in cursor:
    print(row)


C:\python>python testconn.py
(1,)

C:\python>

如何在Toad中连接-使用什么连接字符串?ORA-12170:TNS:connect timeout Occessed表示大多数时间出现防火墙问题Peep peeve teminology check:)您使用“sid”作为变量来保存“服务名称”。SID和服务名称是不同的。