[英]How to create a dictionary from OS environment variables?
操作系统(macos)中设置了环境变量:
MYSQL_HOST="127.0.0.1"
MYSQL_DATABASE="invoice"
MYSQL_UID="dude"
MYSQL_PWD="pass1234"
我想建立一个名为db_config
的列表,最终结果将如下所示:
db_config = {'host':"127.0.0.1", 'database':"invoice", 'user':"dude",
'password':"pass1234"}
(请注意,环境变量名称与db_config
中的键不同db_config
将用于传递数据库连接凭据,并且键必须是上述db_config
中列出的那些。)
我可以“手动”设置db_config
使用:
db_config={'host':os.environ['MYSQL_HOST'], 'database':os.environ['MYSQL_DATABASE'],
'user':os.environ['MYSQL_UID'], 'password':os.environ['MYSQL_PWD']}
...但似乎应该有一种更清洁、更 Pythonic 的方式来做到这一点,但我想不通。
config = {
'host': 'MYSQL_HOST',
'database': 'MYSQL_DATABASE',
'user': 'MYSQL_UID',
'password': 'MYSQL_PWD'
}
db_config = {k: os.environ.get(v) for k, v in config.items()}
根据您希望如何处理不在os.environ
中的项目,您可以使用条件字典理解来忽略它们。
db_config = {k: os.environ.get(v) for k, v in config.items()
if v in os.environ}
您可能希望在下面的代码中重命名old_name
和new_name
; 如果您确定环境变量将存在或要求它们可用于您的代码正常工作,您可以删除字典理解的if
部分,如下所示:
import os
transformations = (
('MYSQL_HOST', 'host'),
('MYSQL_DATABASE', 'database'),
('MYSQL_UID', 'user'),
('MYSQL_PWD', 'password')
)
db_config = {
new_name: os.environ[old_name]
for old_name, new_name in transformations
if old_name in os.environ
}
一个字典中与 MYSQL 相关的所有 ENV 变量
import os
keys = dict(os.environ).keys()
dic = {}
for key in keys:
if 'MYSQL_' in key:
dic.update({key.split('MYSQL_')[1]:os.environ.get(key)})
print(dic)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.