随笔 - 29  文章 - 0  评论 - 0  阅读 - 11121

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

 

 

 

 

posted on   叮叮当~  阅读(704)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示