文章目录
- 1. 直接在app文件中添加配置
- 2. 基于配置config文件添加配置
- 2.1 直接在配置文件中定义
- 2.2 调用配置文件中的类
- 2.3 基于字典+类实现多种环境配置
Flask 项目中,我们会加载很多配置,比如设置数据库连接信息,设置日志所在路径等等。配置的方法有多种:
- 直接在创建app文件中添加配置
- 基于配置config文件添加配置
1. 直接在app文件中添加配置
如果我们的项目比较小我们可已经配置信息直接写在代码里面。下面以设置数据库的连接信息为例:
from flask import Flask
import pymysqlapp = 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 connif __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)
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'
在 app.py 文件中调用:
from flask import Flask
import pymysql
from setting import MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWD, MYSQL_DBapp = 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 connif __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)
2.2 调用配置文件中的类
创建 setting.py 文件,添加如下内容:
class DevSetting:MYSQL_HOST = '172.171.xxx.yyy'MYSQL_PORT = 3306MYSQL_USER = 'username'MYSQL_PASSWD = 'passwd'MYSQL_DB = 'db_name'
在 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 connif __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)
2.3 基于字典+类实现多种环境配置
我们在开发时可能有多个环境,包括:开发环境、测试环境、生产环境。这时,导入数据库配置时,只需要基于config字典+配置类,可实现多种环境的配置。
(1)创建 setting.py
# [数据库配置]
# 基础配置
class BaseSetting:MYSQL_PORT = 3306MYSQL_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
}
(2)app.py 中导入配置
from flask import Flask
import pymysql
from setting import configapp = 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 connif __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)