gpt4 book ai didi

python - cx_Oracle 连接到 Oracle 连接管理器,无需 tnsnames.ora 文件

转载 作者:行者123 更新时间:2023-12-01 09:33:06 24 4
gpt4 key购买 nike

我需要通过 OCM 连接到 Oracle,非 OCM 连接看起来很简单

conn_str = 'user/password@host:port/service_name'

# oracle connection
self.con = cx_Oracle.connect(conn_str)

使用 tnsnames.ora 时同样可以翻译成这样

db_alias = 
(DESCRIPTION=
)
(ADDRESS=
(PROTOCOL=TCP)(HOST=DatabaseHost)(PORT=DatabasePort)
)
(CONNECT_DATA=
(SERVICE_NAME=DatabaseService)
)
)

当我们使用 tnsnames.ora 连接到 OCM 时,会添加以下内容

db_alias = 
(DESCRIPTION=
***(SOURCE_ROUTE=YES)
(ADDRESS=
(PROTOCOL=TCP) (HOST=ConnectionManagerHost)(PORT=ConnectionManagerPort)***
)
(ADDRESS=
(PROTOCOL=TCP)(HOST=DatabaseHost)(PORT=DatabasePort)
)
(CONNECT_DATA=
(SERVICE_NAME=DatabaseService)
)
)

我们如何在 python 中使用 cx_Oracle 做同样的事情?

最佳答案

在连接字符串中使用 TNS 别名:

conn_str = 'chris/mypassword@db_alias'  # use the entry from the tnsnames.ora file
self.con = cx_Oracle.connect(conn_str)

或者将别名与其他形式的 connect() 一起使用,如下所示:

self.con = cx_Oracle.connect(user='chris', password='mypassword', dsn='db_alias') 

如果您知道实际的连接描述符,那么您可以这样做:

cs = """(DESCRIPTION=
(FAILOVER=on)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=sales.example.com)))"""

self.con = cx_Oracle.connect(user="chris", password='mypassword', dsn=cs)

参见Connection Strings

关于python - cx_Oracle 连接到 Oracle 连接管理器,无需 tnsnames.ora 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49780694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com