ToB企服应用市场:ToB评测及商务社交产业平台

标题: pydantic 支持Dotenv 文件设置变量 [打印本页]

作者: 篮之新喜    时间: 2022-9-16 17:20
标题: 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文件设置,有两种加载模式
  1. class Settings(BaseSettings):
  2.     ...
  3.     class Config:
  4.         env_file = '.env'
  5.         env_file_encoding = 'utf-8'
复制代码
3. 完整代码实现

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

如:
  1. NAME=test
  2. PASSWORD=123456
  3. TEST_DATA=just a test
  4. NUM=10
复制代码
注意:是不是string类型,即有没有双引号没什么关系
3.2 python项目下新建一个settings.py文件

如:
  1. from pydantic import BaseSettings, Field, SecretStr
  2. class Settings(BaseSettings):
  3.     root: PosixPath = Path(__file__).parent.absolute()
  4.     webhook_uri: str = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1234567e-6947-4260-8c85-812985c6b622"
  5.     class DB(BaseSettings):
  6.         account: str = Field(..., env='NAME')
  7.         password: SecretStr = Field(..., env='PASSWORD')
  8.         data: str = Field(..., env='TEST_DATA')
  9.         num: int = Field(..., env='NUM')
  10.         class Config:
  11.             env_file = '.env'
  12.             env_file_encoding = 'utf-8'
  13. settings = Settings()
复制代码
注意:
1)Field:可用于提供有关字段和验证的额外信息,如设置必填项、可选、最大值、最小值、字符串长度等限制
2)SecretStr、SecretBytes 敏感信息,将被格式化为'**********‘
3)该类继承自BaseSettings类
3.3 使用上述类
  1. from settings import settings
  2. print(settings.DB().account)
  3. print(settings.DB().password)
  4. print(settings.DB().data)
  5. print(settings.DB().num)
  6. # 打印结果如下:
  7. # test
  8. # **********
  9. # just a test
  10. # 10
复制代码
4. 项目结构截图

  
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4