[英]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.