所以,我可以连接到Oracle数据库这样:
import cx_Oracle as ora
dsnStr = ora.makedsn(host="ABC.COM", port="ABC_PORT", sid="ABC")
con = ora.connect(user="ABC_USER", password="ABC_PASSWORD", dsn=dsnStr)
print(con.version)
con.close()
而这个作品非常好,但我想用连接Oracle wallet
/ tnsnames
/ database.properties
(我是从Java世界中来)。 找不到任何迄今对如何实现这一目标。 此外,我怎么能“配置” cx_Oracle
在这些路径而言Oracle wallet
/ tnsnames
/ database.properties
相应的文件。
cx_Oracle使用相同的技术来连接到数据库为SQL Plus中。 所以,你可以用SQL测试加上第一,如果你发现更容易做。
为了做到这一点,你需要创建一个SQLNET.ORA配置文件。 这允许您设置等参数的位置钱包文件 。 环境变量TNS_ADMIN可以用来指定此位置和其他配置文件(如tnsnames.ora中),如果它不是在默认位置找到。 请参阅文档以获取更多信息。
我不能与Java端转换到由cx_Oracle所需的C面的帮助,但也许下面将有助于显示什么cx_Oracle需要。 我将使用基于Oracle数据库云服务器快车,它采用了钱包进行连接,查看脚本语言连接到数据库云服务器Express中的通用指令的例子在这里 。
您的确切配置和文件可能会有所不同。 安东尼表示,安全设置不特定于cx_Oracle。 更多有经验的和有益的安全专家可以在其他论坛上潜伏。
对于Exadata的快递,预先提供的钱包zip文件下载。 对于Oracle调用接口的应用,如cx_Oracle我们刚刚从zip需要这些文件:sqlnet.ora中,tnsnames.ora中,和cwallet.sso。 您将需要创建/找到这些(或whater需要)文件。
我的文件是:
SQLNET.ORA:
WALLET_LOCATION = (SOURCE = (METHOD = file)
(METHOD_DATA = (DIRECTORY="$TNS_ADMIN")))
SSL_SERVER_DN_MATCH=yes
tnsnames.ora中:
dbaccess = (description=
(address=(protocol=tcps)(port=1522)(host=whereever.com))
(connect_data=(service_name=whereever2.com))
(security=(ssl_server_cert_dn="CN=wherever2.com,O=Oracle Corporation,L=Redwood Shores,ST=California,C=US"))
)
cwallet.sso:我会离开这个你的想象力...
我把那三个文件/Users/cjones/Cloud
和设置环境找到他们:
$ export TNS_ADMIN=/Users/cjones/Cloud
现在,我可以连接在使用连接名称tnsnames.ora
文件:
$ sqlplus -l cj/mypassword@dbaccess
SQL*Plus: Release 12.2.0.1.0 Production on Fri Jul 6 10:20:21 2018
Copyright (c) 1982, 2017, Oracle. All rights reserved.
Last Successful login time: Tue Jul 03 2018 13:00:06 +10:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>
在cx_Oracle您的dsn
将dbaccess
了。