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. 项目结构截图
pydantic 支持Dotenv 文件设置变量的更多相关文章
- PHPSTORM支持dwt文件设置方法
- 如何设置让iis服务器支持.apk文件的下载
随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...
- linux 服务注册 service文件 在service文件中设置变量和环境变量
[Unit] Description= #服务描述 After=syslog.target #服务启动依赖 [Service] Type=forking #服务启动类型 可 ...
- MySQL各类日志文件相关变量介绍
文章转自:http://www.ywnds.com/?p=3721 MySQL各类日志文件相关变量介绍 查询所有日志的变量 1 mysql> show global variables li ...
- webstorm快捷键、支持vue文件等部分使用技巧
转载:https://www.cnblogs.com/seven077/p/9771474.html 1.常用快捷键 shift+↑ 向上选取代码块shift+↓ 向下选取代码块ctrl+/ 注释/取 ...
- 6-x3 declare和typeset命令:设置变量属性
declare 和 typeset 都是 Shell 内建命令,它们的用法相同,都用来设置变量的属性.不过 typeset 已经被弃用了,建议使用 declare 代替.declare 命令的用法如下 ...
- 强大的支持多文件上传的jQuery文件上传插件Uploadify
支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...
- 表单多文件上传样式美化 && 支持选中文件后删除相关项
开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...
- 解剖SQLSERVER 第八篇 OrcaMDF 现在支持多数据文件的数据库(译)
解剖SQLSERVER 第八篇 OrcaMDF 现在支持多数据文件的数据库(译) http://improve.dk/orcamdf-now-supports-databases-with-mult ...
随机推荐
- 浅谈Javascript单线程和事件循环
单线程 Javascript 是单线程的,意味着不会有其他线程来竞争.为什么是单线程呢? 假设 Javascript 是多线程的,有两个线程,分别对同一个元素进行操作: function change ...
- 【clickhouse专栏】clickhouse性能为何如此卓越
在<clickhouse专栏>上一篇文章中<数据库.数据仓库之间的区别与联系>,我们介绍了什么是数据库,什么是数据仓库,二者的区别联系.clickhouse的定位是" ...
- 基于Streamlit_prophet玩转Prophet时序预测
既然是玩转,就得easy,在通俗搞懂核心原理的基础上,重在实践. 本文首先介绍Prophet模型基本使用,再介绍一个开箱即用的开源项目--Streamlit_prophet,进一步降低Prophet使 ...
- 关于Vue Element组件el-checkbox与el-select默认选中值的几点注意事项
el-select 示例: 代码: <el-select v-model="doc.zhic" placeholder="请选择"> <el- ...
- 简述基于CPU的机器码运行过程
引言:会写日志的人不一定是优秀的人,但优秀的人往往是会写日志的 这里涉及五个部分,胡歌,林拜,贾以枚,罗伊人,冯眷眷-林拜老婆 依次对应CPU里的控制器, CPU里的寄存器,存储器,输入电路,输出电路 ...
- label问题排查:打不开标注好的图像
问题描述 之前标注好的文件,标注有bbox和若干points.选择Open Dir打开图像目录,选择Change Output Dir选择json文件所在目录.发现有些图片能正常显示标注后的状态.而有 ...
- NC16430 [NOIP2016]蚯蚓
NC16430 [NOIP2016]蚯蚓 题目 题目描述 本题中,我们将用符号 \(\lfloor c \rfloor\) 表示对 c 向下取整,例如:\(\lfloor 3.0 \rfloor = ...
- labview入门到出家10(进阶)——CAN通讯
讲完串口,这边再讲一个labveiw工控程序中比较常用的CAN通讯吧.很久没有写过CAN通讯的程序了,网上一搜就是什么现场总线,控制器局域网总线,然后一堆复杂的协议.在这里还是一 ...
- Node.js精进(9)——性能监控(上)
市面上成熟的 Node.js 性能监控系统,监控的指标有很多. 以开源的 Easy-Monitor 为例,在系统监控一栏中,指标包括内存.CPU.GC.进程.磁盘等. 这些系统能全方位的监控着应用的一 ...
- JUC源码学习笔记2——AQS共享和Semaphore,CountDownLatch
本文主要讲述AQS的共享模式,共享和独占具有类似的套路,所以如果你不清楚AQS的独占的话,可以看我的<JUC源码学习笔记1> 主要参考内容有<Java并发编程的艺术>,< ...