Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 具有故障转移Oracle url的Python cx_Oracle连接_Python 3.x_Oracle11g_Cx Oracle - Fatal编程技术网

Python 3.x 具有故障转移Oracle url的Python cx_Oracle连接

Python 3.x 具有故障转移Oracle url的Python cx_Oracle连接,python-3.x,oracle11g,cx-oracle,Python 3.x,Oracle11g,Cx Oracle,我有故障转移数据库连接 有些事情如下: CONSTR = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Host Name)(PORT = Port Number)) (LOAD_BALANCE = YES) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Service Name) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (

我有故障转移数据库连接 有些事情如下:

CONSTR =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Host Name)(PORT = Port Number))
(LOAD_BALANCE = YES)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Service Name)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
是否可以使用cx\U oracle导入在python中建立oracle连接

使用python 3.5

当前使用

con = cx_Oracle.connect(user="myuser", password="mypass", dsn=dsnStr)
连接数据库

下面的语句返回CONTR(如上所述)

我的要求是直接使用cx_Oracle.connect()中的CONTR(带故障转移URL)。

如第三个参数所述,第三个参数用于SID。如果您打算使用服务名称,则需要执行以下操作:

dsnStr = cx_Oracle.makedsn("hostName", "port", service_name="service_name")
但是,如果您在tnsnames.ora文件中定义了某些内容,则可以直接使用该名称。您不必使用makedsn()

此外,您还可以使用EZ connect语法,如下所示:

cx_Oracle.connect("user/pw@host:port/service_name")

希望这些选项中的一个能帮助你解决问题

不管是好是坏,一些开发人员喜欢在应用程序中嵌入完整的连接字符串,而不是将其放入
tnsnames.ora
文件中。在这种情况下,您可以执行以下操作:
dsnStr=“(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=HostName)(PORT=PortNumber))(LOAD\u BALANCE=YES)(CONNECT\u DATA=(SERVER=专用)(SERVICE\u NAME=ServiceName)(FAILOVER\u MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5)”
如果我有多个地址,比如(ADDRESS=(PROTOCOL=TCP),它是否适用(HOST=Hostname2)(PORT=Portnumber2)…)并且使用cx_Oracle.connect()可以进入tnsnames.ora的任何内容都是cx_Oracle的连接字符串的合法语法。您也可以使用SQL*Plus进行测试。
cx_Oracle.connect("user/pw@host:port/service_name")