• 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官方文档

  • 相关阅读:
    linux下利用valgrind工具进行内存泄露检测和性能分析
    Linux下内存泄漏工具
    linux下将不同线程绑定到不同core和cpu上——pthread_setaffinity_np
    Linux下getopt()函数
    SparkStreaming+Kafka整合
    Hive+Sqoop+Mysql整合
    crontab
    Hive与Hbase整合
    关系数据库数据与hadoop数据进行转换的工具
    Flume+Kafka+Storm+Hbase+HDSF+Poi整合
  • 原文地址:https://www.cnblogs.com/yezigege/p/13960731.html
Copyright © 2020-2023  润新知