我正在编写一个从Python读取Oracle数据库的程序。
我遇到的最大问题是我想隐藏密码。如有必要,我甚至希望通过文本字段输入密码。
这是我知道的使用Python连接到Oracle数据库的代码行。
db_conn = cx_Oracle.connect(user=r'myUserName', password='myPassword', dsn=dsn_tns)
答案 0 :(得分:1)
更好的解决方案,在DB LINK的定义中根本不提供密码,那么就没有什么可隐藏的。
如何执行此操作?使用钱包。
@ connor-mcdonald在此处显示如何执行此操作。 https://connor-mcdonald.com/2015/09/21/connection-shortcuts-with-a-wallet/
如果您阅读电子钱包文档,他们通常会谈论客户。在这种情况下,您在服务器上设置了钱包,并且数据库“是”客户端,至少是在通过DB_LINK打开与远程数据库的连接时,它将从钱包中获得所需的密码,如这是sqlnet.ora配置。
(由@OldProgrammer提供)这是cx_oracle site on using Oracle Wallet中的相关文章。
答案 1 :(得分:0)
您可以创建一个函数来读取登录信息:
#
# This function gets the login information out of a credentials file
#
def get_login_info(file):
# Create an array of the lines of the file
line = open(file, "r").readlines()
# Create a new list to be used to append the cleaned / trimmed lines
new_line = []
# Loop through the file
for a in line:
# Get rid of any new lines ("enter")
a = a.replace("\n", "")
# Add the cleaned data to the new_line list
new_line.append(a)
# Set the username to be the first object
username = new_line[0]
# Set the password to be the second object
password = new_line[1]
# Return them
return username, password
然后,使用它并将其传递给您的连接字符串:
db_conn = cx_Oracle.connect(user=username, password=password, dsn=dsn_tns)
因此示例文件可能是
:
JerryM
Mypassword2019
它将JerryM
存储为username
,将Mypassword2019
存储为password