使用 Pydantic 的 BaseSettings 进行应用配置

2,162 阅读2分钟

简介

Pydantic 是一个数据验证和设置管理库,它基于 Python 类型提示。BaseSettings 是 Pydantic 提供的一个基础类,专门用于应用配置和环境变量的管理。

在这篇博客中,我们将详细探讨如何使用 BaseSettings 管理应用设置。

安装 Pydantic

首先,你需要安装 Pydantic 库。你可以使用 pip 来安装:

pip install pydantic

基础使用

下面是一个基础的 BaseSettings 使用例子:

from pydantic import BaseSettings

class Settings(BaseSettings):
    APP_NAME: str
    DEBUG_MODE: bool = False

settings = Settings()

在这个例子中,APP_NAMEDEBUG_MODE 就是你应用的两个设置。DEBUG_MODE 已经有了一个默认值(False),而 APP_NAME 则必须通过环境变量或者其他方式来设置。

从环境变量读取设置

BaseSettings 类会自动从环境变量中读取同名的键作为设置值。例如,如果你有一个环境变量叫做 APP_NAMEBaseSettings 会自动把它的值赋给 APP_NAME 设置。

你可以在终端中这样设置环境变量:

export APP_NAME=my_awesome_app

然后,当你初始化 Settings 类时,APP_NAME 就会被设置为 "my_awesome_app"。

使用 .env 文件

除了环境变量,BaseSettings 也支持从一个 .env 文件中读取设置。这通常更方便,因为你可以把所有的应用设置都放在一个文件中。

假设你有一个 .env 文件,内容如下:

APP_NAME=my_awesome_app
DEBUG_MODE=True

BaseSettings 会自动从这个文件中读取设置。

验证和转换

BaseSettings 不仅仅是读取设置,还会验证这些设置,并且根据定义的类型进行转换。

例如,即使在 .env 文件中 DEBUG_MODE 是一个字符串 "True",BaseSettings 会把它转换成布尔值 True

使用字段

你也可以使用 Pydantic 的 Field 类来进一步自定义设置字段。

from pydantic import Field

class Settings(BaseSettings):
    APP_NAME: str = Field(..., title="The name of the app", max_length=100)

在这个例子中,APP_NAME 设置现在有一个标题,而且它的最大长度被限制在 100 个字符以内。

总结

Pydantic 的 BaseSettings 提供了一个灵活而强大的方式来管理应用设置。它支持从环境变量和 .env 文件中读取设置,同时还提供了丰富的验证和转换功能。

希望这篇博客能帮助你更好地理解如何使用 BaseSettings 管理你的应用设置。如果你有更多的问题或者想要了解更多高级功能,可以查阅 Pydantic 的官方文档