如何在数据库连接中隐藏密码?

时间:2019-05-07 12:14:19

标签: python oracle cx-oracle

我正在编写一个从Python读取Oracle数据库的程序。

我遇到的最大问题是我想隐藏密码。如有必要,我甚至希望通过文本字段输入密码。

这是我知道的使用Python连接到Oracle数据库的代码行。

db_conn = cx_Oracle.connect(user=r'myUserName', password='myPassword', dsn=dsn_tns)

2 个答案:

答案 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