在 cx_oracle 上使用多个主机
Using multiple hosts on cx_oracle
我正在使用 cx_oracle pip 包连接到工作中的 oracle 数据库。
dsn_tns = cx_Oracle.makedsn('1.2.3.4', '1521', service_name='TRADES')
conn = cx_Oracle.connect(user='analytics_user', password='welcome', dsn=dsn_tns)
c = conn.cursor()
c.execute('SELECT * FROM all_tables')
但是我连接的 oracle 数据库有 2 个主机 IP 地址。
原来给我的连接字符串是这样的;
SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(Port=1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.222.33.44)(Port=1521))
(CONNECT_DATA =
(SERVICE_NAME = TRADES)
)
)
是否可以在 cx_oracle 上同时使用两者?或者我可以使用任何其他包来允许吗? SQL_Alchemy?
您可以按原样使用 DSN 字符串,无需 SERVICE =
:
DSN = """
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(Port=1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.222.33.44)(Port=1521))
(CONNECT_DATA =
(SERVICE_NAME = TRADES)
)
)
"""
with cx_Oracle.connect(user='user', password='pass', dsn=dsn_tns) as conn:
c = conn.cursor()
c.execute('SELECT * FROM all_tables')
感谢@Christopher-Jones 详情oracle-net-connect-descriptor-strings
我正在使用 cx_oracle pip 包连接到工作中的 oracle 数据库。
dsn_tns = cx_Oracle.makedsn('1.2.3.4', '1521', service_name='TRADES')
conn = cx_Oracle.connect(user='analytics_user', password='welcome', dsn=dsn_tns)
c = conn.cursor()
c.execute('SELECT * FROM all_tables')
但是我连接的 oracle 数据库有 2 个主机 IP 地址。
原来给我的连接字符串是这样的;
SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(Port=1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.222.33.44)(Port=1521))
(CONNECT_DATA =
(SERVICE_NAME = TRADES)
)
)
是否可以在 cx_oracle 上同时使用两者?或者我可以使用任何其他包来允许吗? SQL_Alchemy?
您可以按原样使用 DSN 字符串,无需 SERVICE =
:
DSN = """
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(Port=1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.222.33.44)(Port=1521))
(CONNECT_DATA =
(SERVICE_NAME = TRADES)
)
)
"""
with cx_Oracle.connect(user='user', password='pass', dsn=dsn_tns) as conn:
c = conn.cursor()
c.execute('SELECT * FROM all_tables')
感谢@Christopher-Jones 详情oracle-net-connect-descriptor-strings