zoukankan      html  css  js  c++  java
  • 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官方文档

  • 相关阅读:
    linq语法2 GLenn
    sql 拼接字符串 GLenn
    每日算法 20130225 GLenn
    linq语法1 GLenn
    每日算法 20130227 GLenn
    每日算法 20130226 GLenn
    jquery ajax 分页 GLenn
    PhoneGap应用开发对策:如何通过苹果审核?
    Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
    rails 散乱记录
  • 原文地址:https://www.cnblogs.com/yezigege/p/13960731.html
Copyright © 2011-2022 走看看