【问题标题】:Using multiple hosts on cx_oracle在 cx_oracle 上使用多个主机
【发布时间】:2020-09-05 16:35:09
【问题描述】:

我正在使用 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?

【问题讨论】:

    标签: python oracle cx-oracle


    【解决方案1】:

    您可以按原样使用 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

    【讨论】:

    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多