如何在Python脚本中隐藏SQL Plus密码

时间:2018-06-19 13:43:38

标签: python sql sqlplus

我创建了Python脚本来截断Oracle表。我使用SQL Plus,但是问题是我必须隐藏现在是纯文本的密码。我有这样的论点:

 expect((req.request.body)).toBe(JSON.stringify(dummyPost));

然后我运行以下命令:

db_name = "DB_NAME"
db_user = "DB_USER"
db_password = "DB_PASS"

一切正常,但是问题是密码。据我所知,SQL Plus不使用jceks文件。那么其他隐藏密码的解决方案是什么?

2 个答案:

答案 0 :(得分:1)

在Linux上,可以创建如下bash脚本:

# sql.env
export db_PSSWD='pswd'
export db_USER='user'

在运行python之前,请运行bash-script初始化环境变量:

source sql.env

然后,在python中:

db_psswd = os.environ.get("db_PSSWD")
db_user = os.environ.get("db_USER")

答案 1 :(得分:1)

您可以使用类似Django SECRET_KEY的解决方案,该解决方案存储在项目存储库之外的文件中。从这个文件中,我在settings.py中加载这样的键:

with open(os.path.join(ROOT_DIR, 'etc/secret_key.txt')) as f:
    SECRET_KEY = f.read().strip()

在上面的示例中,文本文件的内容只是关键,但是您可以使用JSON,YAML甚至Python文件等结构化格式并将其导入。

Python机密文件示例:

# secret.py
DB_PSSWD='pswd'
DB_USER='user'

只需在您的源代码中:

import secret

print(DB_USER)

YAML机密文件示例:

# secret.yaml
db_psswd: pswd
db_user: user

只需在您的源代码中:

import yaml

with open('secret.yaml') as yaml_secret:
    rules = yaml.load(cfg)
print(rules['db_user'])