Nit*_*zle 5 python authentication oracle cx-oracle public-key-encryption
我用谷歌搜索了一下,但我没有找到任何实质性的结果.是否可以使用基于密钥的身份验证使用Python连接到Oracle服务器?我的目标是能够自动执行我正在使用Python进行的一些报告,而无需在服务器中的任何位置存储用户名/密码.
小智 6
一种可能的解决方案是实施Oracle Wallet.创建Oracle Wallet条目涉及:
示例:我正在使用的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)))
Run Code Online (Sandbox Code Playgroud)
新条目成功解析后,为ORCL_MY_USER本地名称创建oracle钱包条目.您将在python脚本中使用的新本地名称,无需在其中提供或硬编码密码即可进行连接.
例:
import cx_Oracle
db = cx_Oracle.connect("/ @ ORCL_MY_USER")
cursor = db.cursor()
r = cursor.execute("用户名"中的"SELECT用户名,密码,account_status,default_tablespace,来自dba_users的temporary_tablespace")
对于用户名,密码,account_status,default_tablespace,cursor中的temporary_tablespace:
Run Code Online (Sandbox Code Playgroud)print username, '\t', password, '\t', account_status, '\t', default_tablespace, '\t', temporary_tablespace
| 归档时间: |
|
| 查看次数: |
4168 次 |
| 最近记录: |