• 03-Flask-工程配置加载方式



    前言

    • 本篇来学习下Flake工程配置加载方式

    配置对象中加载

    • 应用场景:作为默认配置写在代码中
    # -*- coding: utf-8 -*-
    # @Time    : 2023/9/2
    # @Author  : 大海
    from flask import Flask
    
    
    class DefaultConfig(object):
        """默认配置"""
    
        MYSQL_HOST = '192.168.66.66'
    
    
    app = Flask(__name__)
    
    # 设置配置对象方式读取配置
    app.config.from_object(DefaultConfig)
    
    
    @app.route('/')
    def index():
        # 读取配置,相当于字典中取值
        mysql_host = app.config.get('MYSQL_HOST')
        # mysql_host = app.config['MYSQL_HOST']
        print(mysql_host)
        return 'Hello 大海!'
    
    
    if __name__ == '__main__':
        app.run()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    配置文件中加载

    • 应用场景:项目中使用固定的配置文件
    # setting.py
    # -*- coding: utf-8 -*-
    # @Time    : 2023/9/2
    # @Author  : 大海
    
    MYSQL_HOST = '192.168.88.88'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    # -*- coding: utf-8 -*-
    # @Time    : 2023/9/2
    # @Author  : 大海
    
    from flask import Flask
    
    
    app = Flask(__name__)
    
    # 设置配置文件方式加载配置
    app.config.from_pyfile('setting.py')
    
    
    @app.route('/')
    def index():
        # 读取配置,相当于字典中取值
        mysql_host = app.config.get('MYSQL_HOST')
        # mysql_host = app.config['MYSQL_HOST']
        print(mysql_host)
        return 'Hello 大海!配置文件方式加载配置。'
    
    
    if __name__ == '__main__':
        app.run()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    环境变量中加载

    • 先设置环境变量
    # export 变量名=配置文件名   Linux系统环境中使用
    export PROJECT_SETTING=setting.py
    
    • 1
    • 2
    # -*- coding: utf-8 -*-
    # @Time    : 2023/9/2
    # @Author  : 大海
    
    from flask import Flask
    
    app = Flask(__name__)
    
    # 设置环境变量方式加载配置
    app.config.from_envvar('PROJECT_SETTING', silent=True)
    
    
    @app.route('/')
    def index():
        # 读取配置,相当于字典中取值
        mysql_host = app.config.get('MYSQL_HOST')
        # mysql_host = app.config['MYSQL_HOST']
        print(mysql_host)  
        return 'Hello 大海!环境变量方式加载配置。'
    
    
    if __name__ == '__main__':
        app.run()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    silent 参数说明:

    1. Flase:没找到变量值时,报错通知,默认为Flase
    2. True:没找到变量值时也正常运行下去

    三种配置方式优缺点

    1. 配置对象
      • 优点:继承,可复用
      • 缺点:敏感数据暴露代码中
    2. 配置文件
      • 优点:独立配置文件,保护敏感数据
      • 缺点:不能继承,文件路径固定,不灵活
    3. 环境变量
      • 优点:独立配置文件,保护敏感数据,文件路径不固定,灵活
      • 缺点: 不方便,要记得设置环境变量

    工厂模式创建Flask app

    # -*- coding: utf-8 -*-
    # @Time    : 2023/9/2
    # @Author  : 大海
    
    from flask import Flask
    
    
    class DefaultConfig(object):
        """默认配置"""
    
        MYSQL_HOST = '192.168.66.66'
    
    
    def create_flask_app(config):
        app = Flask(__name__)
    
        # 设置配置对象方式读取配置
        app.config.from_object(config)
        # 设置环境变量方式加载配置
        app.config.from_envvar('PROJECT_SETTING', silent=True)
    
        return app
    
    
    app = create_flask_app(DefaultConfig)
    
    
    @app.route('/')
    def index():
        # 读取配置,相当于字典中取值
        mysql_host = app.config.get('MYSQL_HOST')
        # mysql_host = app.config['MYSQL_HOST']
        print(mysql_host)
        return 'Hello 大海!'
    
    
    if __name__ == '__main__':
        app.run()
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
  • 相关阅读:
    Qt中常见的文件操作
    Vue知识系列(6)每天10个小知识点
    layuiselect设置为不可下拉选取
    N的M次方 马蹄集
    拼多多不满“国内市场”,将于9月中旬在美国推出跨境电商平台
    java-net-php-python-ssm宠物商店计算机毕业设计程序
    基于Matlab模拟用于海况海洋学研究的 X 波段雷达系统(附源码)
    华为OD机考算法题:简单的自动曝光
    以前红火的农村大集,现在为何赶集的人越来越少,生意还好不好做
    初识kotlin(初用kotlin一时爽、一直用一直爽)
  • 原文地址:https://blog.csdn.net/IT_heima/article/details/132635220