首页 > 其他分享 >pydantic 支持Dotenv 文件设置变量

pydantic 支持Dotenv 文件设置变量

时间:2022-08-23 10:58:45浏览次数:61  
标签:... 变量 settings Field install env Dotenv pydantic

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

 

 

 

 

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

相关文章

  • 减少全局变量的使用?使用构造函数和原型对象公用方法函数?
    把函数挂载到构造函数的原型对象上,可以公用这些函数方法;//使用函数表达式的方法创建一个构造函数constOnlyOne=function(){}//在函数的原型上添......
  • Stream流-传统集合的多步变量代码和使用Stream流方式进行过滤
    Stream流说的Stream便容易想到I/OStream而实际上谁规定“流”就一定是Io流呢?在java8中得益于Lambda所带来的函数式编程引入了一个全新的Stream概念用于解决已有集合......
  • PerfView专题 (第八篇):洞察 C# 内存泄漏之寻找静态变量名和GC模式
    一:背景这篇我们来聊一下PerfView在协助WinDbg分析Dump过程中的两个超实用技巧,可能会帮助我们快速定位最后的问题,主要有如下两块:洞察内存泄漏中的静态大集合变量......
  • 关于java变量的学习
    变量的概念内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量是程序中最基本的存储单元  包含变量类型、变量名和存储的值使用变量注意J......
  • mysql使用变量
    定义变量:SELECT@变量名:=值;查看变量:SELECT@变量名;SELECT@A:=124;--定义变量SELECT@A;--查看变量执行结果:123注意:查看变量时,必须先执行定义变量语句SE......
  • 如何在CSS中使用变量
    前言CSS变量(官方称为自定义属性)是用户定义的值,它可以在你的代码库中设置一次并多次使用。它们使管理颜色、字体、大小和动画值变得更加容易,并确保整个web应用的一致性。......
  • 变量
    变量声明在ES6以前我们通常通过var来声明变量。首先要进行变量声明,然后再进行使用varnum=123;//声明变量num,并且赋值为123var声明多个变量vara=10,b=20,c;......
  • C#中的static静态变量的用法
    静态局部变量定义:在局部变量前加上static关键字时,就定义了静态局部变量。特点:A、该变量在全局数据区分配内存。B、初始化:如果不显式初始化,那么将被隐式初始化为0......
  • 变量的提升 与 函数的预解析问题 (函数声明 的两种方法 声明式 和 表达式式)
    1·变量的提升 console.log(num);varnum=1; 在正常的代码的运行顺序上来说运行结果直接报错 ......
  • Kingbase V8R6存储过程变量数据导出到操作系统文件
    KingbaseV8R6存储过程变量数据导出到操作系统文件说明:KingbaseESV8R6如何将自定义过程中的变量数据导出到操作系统文件中。本次案例数据库版本:test=#selectversion......