当前位置: 首页 > news >正文

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

文章目录

  • 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)

相关文章:

  • Selenium 4.0+ 版本的“正确使用”以及“驱动程序的正确安装”
  • TinyEMU编译与使用
  • 二分以及练习题目
  • wordpress外贸独立站
  • laravel-admin 头部添加操作
  • openssl3.2 - exp - 产生随机数
  • 本地部署websocket服务端并结合内网穿透实现固定公网地址连接
  • 文本溢出隐藏 显示省略号,鼠标悬浮展示 el-tooltip(TooltipIsShowMixin封装)
  • 智能驾驶规划控制理论学习07-规划算法整体框架
  • Ps:历史记录面板
  • 前端常见的安全问题以及处理措施
  • STC89C52串口通信详解
  • 虚拟化相关面试题集锦(1)—— 如何在QEMU/KVM中跑通AI相关训练
  • docker安装php7.4安装(swoole)
  • Qt 类的前置声明和头文件包含
  • 深入了解以太坊
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Akka系列(七):Actor持久化之Akka persistence
  • Android组件 - 收藏集 - 掘金
  • codis proxy处理流程
  • Debian下无root权限使用Python访问Oracle
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Mac转Windows的拯救指南
  • maven工程打包jar以及java jar命令的classpath使用
  • php的插入排序,通过双层for循环
  • spring学习第二天
  • vue数据传递--我有特殊的实现技巧
  • 前端之React实战:创建跨平台的项目架构
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #stm32驱动外设模块总结w5500模块
  • $L^p$ 调和函数恒为零
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (编译到47%失败)to be deleted
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (推荐)叮当——中文语音对话机器人
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转载)利用webkit抓取动态网页和链接
  • (轉貼) UML中文FAQ (OO) (UML)
  • .bat批处理出现中文乱码的情况
  • .NET 动态调用WebService + WSE + UsernameToken
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .net和jar包windows服务部署
  • .NET简谈设计模式之(单件模式)
  • .net下的富文本编辑器FCKeditor的配置方法