首页 > 解决方案 > 如何在 Windows 中通过 LDAP 将 Python 3.x cx_Oracle 连接到 Oracle DB?

问题描述

我已经获得了有关数据库的这些详细信息。

Userid & Password, 
LDAP Server : stpoid.corp.com:3060:3131, 
Context: cn=OracleContext,dc=corp,dc=com, 
DB server= PRD1. 

我可以使用带有这些详细信息的 sql developer 成功连接和查询数据库。我在 Windows 10 上使用 cx_oracle 运行 python3.6。

我阅读了https://stackoverflow.com/a/32151099/4799035中的说明,模糊地发现我需要创建 sqlnet.ora 和/或 tnsnames.ora 和/或 ldap.ora 文件。但是这些说明在 Windows 上效果不佳。

但我不确定我应该在 Windows 文件结构的哪个位置创建它们?或者我可以在任何地方创建它们并将它们设置在路径变量中吗?变量的名称应该是什么?我应该如何配置 cx_oracle.connect() 参数?我可以在 cx_oracle.makedns() 中传递这些参数吗?

任何文件或指导都会有所帮助。

标签: python-3.xoracleldapcx-oracle

解决方案


请参阅 cx_Oracle 手册条目Optional Oracle Net Configuration Files

如果 cx_Oracle 正在使用 Instant Client 库,那么您可以将文件放在network\admin子目录中,例如c:\instantclient_19_5\network\admin\tnsnames.ora. 这是使用来自c:\instantclient_19_5.

或者,如果您将它们放在自定义目录中,例如 in c:\configfiles,那么您可以将TNS_ADMIN环境变量设置为该目录。您可以在 Python 启动之前设置它,或者(使用 cx_Oracle 6 或更高版本)您可以在应用程序之前设置它:

import os
import cx_Oracle

# Do this before opening a connection
os.environ['TNS_ADMIN'] = 'c:\configfiles'

推荐阅读