python从环境变量和配置文件中获取配置参数

前言

从环境变量和配置文件中获取配置参数,相关库:

  • python-dotenv:第三方库,需要使用pip安装
  • configparser:标准库

代码

  • test.ini

    [mysql]
    host = "192.168.0.10"
    port = 3306
    user = "root"
    password = "123456"
    [postgresql]
    host = "192.168.0.11"
    port = 5432
    user = "postgres"
    password = "123456"

  • demo.py

    from configparser import ConfigParser, NoSectionError, NoOptionError
    from dotenv import load_dotenv
    import os

    如果存在环境变量的文件,则加载配置到环境变量

    if os.path.exists("settings.env"):
    load_dotenv("settings.env")
    os_env = os.environ
    def read_config(filename: str) -> ConfigParser:
    """
    从文件中读取配置信息
    Parameters
    ----------
    filename : str, 配置文件
    """
    # 实例化对象
    config = ConfigParser()
    if not os.path.exists(filename):
    raise FileNotFoundError(f"配置文件 {filename} 不存在")
    config.read(filename, encoding="utf-8")
    return config
    def get_config(config: ConfigParser, section: str, key: str):
    """
    根据指定section和key获取value
    Parameters
    ----------
    config: ConfigParser(), 配置实例对象
    section: str, 配置文件中的区域
    key: str, 配置的参数名
    """
    # 优先从环境变量中获取配置参数, 没有的话再从配置文件中获取
    value = os_env.get(key, "")
    if not value:
    try:
    value = config.get(section, key)
    except (NoOptionError, NoSectionError):
    # 没有的话就返回None
    value = None
    return value
    if name == 'main':
    config = read_config("test.ini")
    print(get_config(config, "mysql", "host"))

相关推荐
把我格子衫拿来2 分钟前
误差预算怎么做?从雅可比到蒙特卡洛的三维定位不确定度分析
python·蒙特卡洛·三维定位·误差分析·不确定度
invicinble4 分钟前
对服务器资源的理解--理解用户请求,部署,服务器资源相关的映射层
开发语言
漫步人生走在路上7 分钟前
用小语种SEO突破外贸B2B天花板:法语、德语市场的实测数据
开发语言·前端·javascript·人工智能·搜索引擎·ecmascript
yuniko-n15 分钟前
【JUC】线程池
java·开发语言
文章永久免费只为良心24 分钟前
Ctfshow_Web应用安全与防护_第二章_无字母数字命令执行
前端·python·安全·网络安全·渗透测试·ctf·红队渗透测试
dwm8888888825 分钟前
c# 创建使用本地NuGet包
开发语言·c#
2601_9628857233 分钟前
如何用 Python 获取上证指数、沪深300、中证500 等指数行情?
开发语言·python
昔我往昔36 分钟前
LangChain_RAG_学习小结
后端·python
张张123y1 小时前
后端第六课:Python 语法速通(0 基础入门,AI 应用开发的第一门语言)
开发语言·人工智能·python·ai·后端开发
小马不起床1 小时前
Django 后端实战指南_10:用户扩展档案信息表
python·django·sqlite