python-3.x - 如何在 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() 中传递这些参数吗?
任何文件或指导都会有所帮助。
解决方案
请参阅 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'
推荐阅读
- ag-grid-angular - 在 Agrid 中隐藏过滤器行
- reactjs - 如何使用反应路由器 dom 在另一个组件中渲染一个组件中存在的链接?
- visual-studio-code - 如何在 VSCODE 中删除这些奇怪的工件?
- reactjs - 如何在 GET/POST react js 的 setState 中调用另一个类的函数/方法?
- javascript - Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException- laravel 5.7.28
- ios - 取消 WhatsApp Swift 之类的语音注释
- python - 根据列中的行值对每个组执行扣除
- node.js - 我想使用节点 js 将 mongodb 查询结果保存到 postgresql
- java - 我已经创建了 chrome 驱动程序对象,然后我得到了 java.lang.NullPointerException
- java - 在 Sceneform 中拍照时隐藏 PlaneRenderer