pydantic 支持Dotenv 文件设置变量

pydantic 支持Dotenv 文件设置变量

1. 安装

pip install pydantic

pip install pydantic[dotenv]

注意:

安装pip install pydantic[dotenv]时会提示no matches found: pydantic[dotenv],zsh会将[], ^等这些bash中并不会被视为元字符的特殊字符进行扩展,所以必须在前面加上转义或者加上引号””让zsh识别成普通字符串pip install “pydantic[dotenv]”或pip install pydantic[dotenv]

2. 支持.env文件设置,有两种加载模式

class Settings(BaseSettings):
    ...
 
    class Config:
        env_file = ".env"
        env_file_encoding = "utf-8"

3. 完整代码实现

3.1 python项目下新建一个.env文件

如:

NAME=test
PASSWORD=123456
TEST_DATA=just a test
NUM=10

注意:是不是string类型,即有没有双引号没什么关系

3.2 python项目下新建一个settings.py文件

如:

from pydantic import BaseSettings, Field, SecretStr


class Settings(BaseSettings):
    root: PosixPath = Path(__file__).parent.absolute()
    webhook_uri: str = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1234567e-6947-4260-8c85-812985c6b622"

    class DB(BaseSettings):
        account: str = Field(..., env="NAME")
        password: SecretStr = Field(..., env="PASSWORD")
        data: str = Field(..., env="TEST_DATA")
        num: int = Field(..., env="NUM")

        class Config:
            env_file = ".env"
            env_file_encoding = "utf-8"


settings = Settings()

注意:

1)Field:可用于提供有关字段和验证的额外信息,如设置必填项、可选、最大值、最小值、字符串长度等限制

  • Field(None) 是可选字段,不传的时候值默认为None

  • Field(…) 是设置必填项字段

2)SecretStr、SecretBytes 敏感信息,将被格式化为”**********‘

3)该类继承自BaseSettings类

3.3 使用上述类

from settings import settings

print(settings.DB().account)
print(settings.DB().password)
print(settings.DB().data)
print(settings.DB().num)

# 打印结果如下:
# test
# **********
# just a test
# 10

4. 项目结构截图

 

 

 

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » pydantic 支持Dotenv 文件设置变量