当前位置:   article > 正文

Flask基于配置文件添加项目config配置_flask config

flask config


Flask 项目中,我们会加载很多配置,比如设置数据库连接信息,设置日志所在路径等等。配置的方法有多种:

  • 直接在创建app文件中添加配置
  • 基于配置config文件添加配置

1. 直接在app文件中添加配置

如果我们的项目比较小我们可已经配置信息直接写在代码里面。下面以设置数据库的连接信息为例:

from flask import Flask
import pymysql

app = Flask(__name__)

# 直接在代码中赋值
app.config['MYSQL_HOST'] = '172.171.xxx.yyy'
app.config['MYSQL_PORT'] = 3306
app.config['MYSQL_USER'] = 'username'
app.config['MYSQL_PASSWD'] = 'passwd'
app.config['MYSQL_DB'] = 'db_name'


@app.route("/connect")
def connect_to_mysql():
    conn = pymysql.connect(
        host=app.config['MYSQL_HOST'],
        port=app.config['MYSQL_PORT'],
        user=app.config['MYSQL_USER'],
        passwd=app.config['MYSQL_PASSWD'],
        db=app.config['MYSQL_DB']
    )
    return conn


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  • 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

2. 基于配置config文件添加配置

当我们的项目较大时我们要将大量的配置信息写在配置文件里面。按照项目需要具体可使用如下几种方式。

2.1 直接在配置文件中定义

创建 setting.py 文件,添加如下内容:

MYSQL_HOST = '172.171.xxx.yyy'
MYSQL_PORT = 3306
MYSQL_USER = 'username'
MYSQL_PASSWD = 'passwd'
MYSQL_DB = 'db_name'
  • 1
  • 2
  • 3
  • 4
  • 5

在 app.py 文件中调用:

from flask import Flask
import pymysql
from setting import MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWD, MYSQL_DB

app = Flask(__name__)


@app.route("/connect")
def connect_to_mysql():
    conn = pymysql.connect(
        host=MYSQL_HOST,
        port=MYSQL_PORT,
        user=MYSQL_USER,
        passwd=MYSQL_PASSWD,
        db=MYSQL_DB
    )
    return conn


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2.2 调用配置文件中的类

创建 setting.py 文件,添加如下内容:

class DevSetting:
    MYSQL_HOST = '172.171.xxx.yyy'
    MYSQL_PORT = 3306
    MYSQL_USER = 'username'
    MYSQL_PASSWD = 'passwd'
    MYSQL_DB = 'db_name'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在 app.py 文件中调用:

from flask import Flask
import pymysql
from setting import DevSetting  # 调用DevSetting类

app = Flask(__name__)
app.config.from_object(DevSetting)  # 获取数据库配置信息


@app.route("/connect")
def connect_to_mysql():
    conn = pymysql.connect(
        host=app.config['MYSQL_HOST'],
        port=app.config['MYSQL_PORT'],
        user=app.config['MYSQL_USER'],
        passwd=app.config['MYSQL_PASSWD'],
        db=app.config['MYSQL_DB']
    )
    return conn


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2.3 基于字典+类实现多种环境配置

我们在开发时可能有多个环境,包括:开发环境、测试环境、生产环境。这时,导入数据库配置时,只需要基于config字典+配置类,可实现多种环境的配置。

(1)创建 setting.py

# [数据库配置]
# 基础配置
class BaseSetting:
    MYSQL_PORT = 3306
    MYSQL_USER = 'username'
    MYSQL_PASSWD = 'passwd'
    MYSQL_DB = 'db_name'


# 开发环境
class DevSetting(BaseSetting):
    MYSQL_HOST = '172.171.xxx.yyy'


# 测试环境
class TestSetting(BaseSetting):
    MYSQL_HOST = '172.171.xxx.zzz'


# 生产环境
class ProdSetting(BaseSetting):
    MYSQL_HOST = '172.171.yyy.zzz'


config = {
    'dev': DevSetting,
    'test': TestSetting,
    'prod': ProdSetting,
    'default': DevSetting
}
  • 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

(2)app.py 中导入配置

from flask import Flask
import pymysql
from setting import config

app = Flask(__name__)
app.config.from_object(config['dev'])  # 获取环境配置信息


@app.route("/connect")
def connect_to_mysql():
    conn = pymysql.connect(
        host=app.config['MYSQL_HOST'],
        port=app.config['MYSQL_PORT'],
        user=app.config['MYSQL_USER'],
        passwd=app.config['MYSQL_PASSWD'],
        db=app.config['MYSQL_DB']
    )
    return conn


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/472138
推荐阅读
相关标签
  

闽ICP备14008679号