如何在 Python 脚本中隐藏 SQL Plus 密码
How to hide SQL Plus password in Python script
我创建了Python 脚本运行cate Oracle table。我使用 SQL Plus,但问题是我现在必须隐藏纯文本密码。我有这样的论点:
db_name = "DB_NAME"
db_user = "DB_USER"
db_password = "DB_PASS"
然后我 运行 命令如下:
sqlplus_delete_table = 'echo "TRUNCATE TABLE ' + db_user + '.' + table + ' DROP STORAGE;"'
sqlplus_connection = db_user + '/' + db_password + '@' + db_name
os.system(sqlplus_delete_table + ' | sqlplus -s ' + sqlplus_connection)
一切正常,但问题是密码。据我所知,SQL Plus 不使用 jceks 文件。那么隐藏密码的其他解决方案是什么?
在 Linux 上可以创建 bash-脚本,例如:
# sql.env
export db_PSSWD='pswd'
export db_USER='user'
之前运行宁python,运行bash-初始化环境变量的脚本:
source sql.env
然后,在python
中:
db_psswd = os.environ.get("db_PSSWD")
db_user = os.environ.get("db_USER")
您可以使用像 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'])
我创建了Python 脚本运行cate Oracle table。我使用 SQL Plus,但问题是我现在必须隐藏纯文本密码。我有这样的论点:
db_name = "DB_NAME"
db_user = "DB_USER"
db_password = "DB_PASS"
然后我 运行 命令如下:
sqlplus_delete_table = 'echo "TRUNCATE TABLE ' + db_user + '.' + table + ' DROP STORAGE;"'
sqlplus_connection = db_user + '/' + db_password + '@' + db_name
os.system(sqlplus_delete_table + ' | sqlplus -s ' + sqlplus_connection)
一切正常,但问题是密码。据我所知,SQL Plus 不使用 jceks 文件。那么隐藏密码的其他解决方案是什么?
在 Linux 上可以创建 bash-脚本,例如:
# sql.env
export db_PSSWD='pswd'
export db_USER='user'
之前运行宁python,运行bash-初始化环境变量的脚本:
source sql.env
然后,在python
中:
db_psswd = os.environ.get("db_PSSWD")
db_user = os.environ.get("db_USER")
您可以使用像 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'])