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