flask配置文件之python-dotenv的使用

本文介绍了如何使用python-dotenv在Flask项目中管理敏感配置,如密码和钥匙,通过环境变量避免明文存储。通过`.env`文件和load_dotenv()函数,实现了非提交的环境变量加载,确保了代码库的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

在一些项目中,处于安全性的要求,一般不将密码,key等放入到配置文件中。然而这些代码又是上传在git等平台上。为了方便管理。一般采用系统变量的方式来实现。

flask官方推荐使用python-dotenv包来管理特殊的配置。

使用方式

下载
pip install python-dotenv
目录结构及代码
.
├── .env
└── settings.py

settings.py

from dotenv import load_dotenv
load_dotenv()

或者加一个配置,会默认覆盖已有环境变量的配置,推荐

load_dotenv(verbose=True)

或者,指定配置文件地址

from pathlib import Path  # python3 only
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)

示例如下:
.env 一般是不提交到git上的。记得使用.gitignore 忽略

MYSQL_USER="root"
MYSQL_PASSWORD="mysql"
MYSQL_HOST="localhost"
MYSQL_PORT=3306
MYSQL_DATABASE="test"

REDIS_HOST="localhost"
REDIS_PORT=6379
REDIS_DECODE_RESPONSES=true
REDIS_PASSWORD=""

settings.py

import os
from dotenv import load_dotenv
load_dotenv(override=True)

一般的非隐秘的配置,可直接写在此处

DEBUG = True

读取环境变量中的配置

MYSQL_USER = os.getenv("MYSQL_USER")
MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD")
MYSQL_HOST = os.getenv("MYSQL_HOST")
MYSQL_PORT = int(os.getenv("MYSQL_PORT"))  # python-dotenv不能自动转换类型,需添加转换
MYSQL_DATABASE = os.getenv("MYSQL_DATABASE")

REDIS_HOST = os.getenv("REDIS_HOST")
REDIS_PORT = int(os.getenv("REDIS_PORT"))
REDIS_DECODE_RESPONSES = True
REDIS_PASSWORD = os.getenv("REDIS_PASSWORD")

引入变量的方法就是普通的python导入:

from settings import MYSQL_USER
参考

python-dotenv官网文档
flask官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ch3nnn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值