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


简介

在一些项目中,处于安全性的要求,一般不将密码,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         .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官方文档


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM