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

2024-04-23 06:52:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在连接到我的python application中的remote Oracle DB using cx_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)

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

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))

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

import cx_Oracle
connstr = '[USERNAME]/[PASSWORD]@[SERVICE NAME]'
conn = cx_Oracle.connect(connstr)

结果:数据库错误:ORA-12154:TNS:无法解析指定的连接标识符

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

你知道有什么问题吗

提前谢谢


Tags: nameimport数据库connect错误serviceusernamepassword
1条回答
网友
1楼 · 发布于 2024-04-23 06:52:43

我有这个标准的连接方式

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_Oracle版本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>

相关问题 更多 >