我用谷歌搜索了一下,但没有找到任何实质性的结果。是否可以使用基于密钥的身份验证来使用 Python 连接到 Oracle 服务器?我的目标是能够自动化使用 Python 进行的一些报告,而无需在服务器中的任何位置存储用户名/密码。
一种可能的解决方案是实施 Oracle Wallet。创建 Oracle Wallet 条目涉及:
- 为所述实例建立的 tnsname 解析名称
- 用户名和密码
示例:我正在使用的 Oracle sid 名为 ORCL,我必须连接的用户名为 my_user。在您的 tnsnames.ora 文件中,您已经有一个解析 ORCL 服务名称/sid 的条目,请使用完全相同的参数创建另一个条目:
#initial local name entry:
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = my_ip)(PORT = 1528))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
#create an additional local name entry:
ORCL_MY_USER = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = my_ip)(PORT = 1528))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
新条目成功解析后,为 ORCL_MY_USER 本地名称创建 oracle wallet 条目。您将在 python 脚本中使用这个新的本地名称进行连接,而无需在其中提供或硬编码密码。
Example:
导入cx_Oracle
db = cx_Oracle.connect("/@ORCL_MY_USER")
光标 = db.cursor()
r = 光标.execute("选择用户名、密码,
account_status、default_tablespace、temporary_tablespace 来自
dba_users 按用户名排序”)
用户名、密码、帐户状态、默认表空间、
游标中的临时表空间:
print username, '\t', password, '\t', account_status, '\t', default_tablespace, '\t', temporary_tablespace
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)