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