其他分享
首页 > 其他分享> > 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:可用于提供有关字段和验证的额外信息,如设置必填项、可选、最大值、最小值、字符串长度等限制

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. 项目结构截图

 

 

 

 

标签:...,变量,settings,Field,install,env,Dotenv,pydantic
来源: https://www.cnblogs.com/dyl0/p/16615352.html