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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/734702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PTA】L1-011 L1-012 L1-013 L1-014 L1-015(C)第三天

L1-011 A-B 分数 20 作者 陈越 单位 浙江大学 本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。 输入格式: 输入在2行中先后给出字符串A和B。两字符…

javase day02笔记

第二天课堂笔记 源文件的组成部分★★ 源文件外部结构 class 类名{}main方法 public static void main(String [] args){}main方法可有可无 没有main的情况,编译成功,运行失败,没有程序入口 多个main情况,编译报错,…

半监督 伪标签

什么是半监督学习 半监督学习也是一类更接近于人类学习方法的机器学习范式。试想这样一个场景,我们小时候学习识别小猫、小狗、汽车等等物品时,往往只需要父母进行一两次的指导,我们就能很准确地辨认出什么是猫狗。这背后有一个重要原因是&am…

抖音素材网站去哪下载?给你推荐六个抖音自媒体网站

各位抖音视频创作达人们,是否在苦苦寻觅那些能够点燃观众热情,让视频内容跃然屏上的素材宝库呢?此刻,你们的寻觅之旅将迎来终点!我将向你们隆重推荐10个精心挑选的视频素材库,它们定能让你们的抖音视频如同…

Windows下安装pip

一、下载pip 官网地址:https://pypi.org/project/pip/#files 1.1、pip工具查找方法 单击官网首页“PyPi”选项 在弹出来的搜索框中输入“pip” 选择最新的pip版本,点进去 下载pip安装包包 二、安装pip 解压“pip-24.0.tar.gz”,进…

【Linux】常用操作命令

目录 基本命令关机和重启帮助命令 用户管理命令添加用户:useradd 命令修改密码:passwd 命令查看登录用户:who 命令查看登录用户详细信息 :w切换用户 目录操作命令cdpwd命令目录查看 ls [-al] 目录操作【增,删,改&#…

java通过poi-tl生成word

我看公司之前做电子合同,使用TIBCO jaspersoft做的报表模板,如果是给自己公司开发或者给客户做项目,这个也没有什么,因为反正模板是固定的,一次性开发,不用担心后续的问题。即使后期有调整,改一…

java新特性stream流的相关操作(二)

参考资料: java新特性stream流的相关操作(一) groupingBy的综合使用: package com.example.worddemo.test.jacob;import com.alibaba.fastjson2.JSON;import java.util.Arrays; import java.util.List; import java.util.Map; i…

安全运营方案的基本框架和关键要素

一、前言 阐述安全运营方案的目的和重要性。强调安全运营与组织整体战略目标的关联。 二、安全运营原则 确立安全运营的基本原则,如保密性、完整性和可用性。明确安全责任划分,确保各部门和人员履行安全职责。 三、安全风险评估与管理 进行全面的安…

计算两帧雷达数据之间的变换矩阵

文章目录 package.xmlCMakeLists.txtpoint_cloud_registration.cc运行结果 package.xml <?xml version"1.0"?> <package format"2"><name>point_cloud_registration</name><version>0.0.0</version><descriptio…

九州金榜|孩子厌学的因素及解决办法

孩子在学习的过程中&#xff0c;遇到厌学这种情况非常容易见到&#xff0c;这也是孩子在成长的过程中经常遇到的烦恼。面对孩子的厌学&#xff0c;作为家长这时候不要慌乱&#xff0c;要做到分析孩子产生厌学的原因&#xff0c;在去寻找解决孩子厌学的办法。下面九州金榜家庭教…

【漏洞复现】大华ICC智能物联综合管理平台任意文件读取漏洞

Nx01 产品简介 大华智能物联综合管理平台 iConnection Center&#xff08;以下简称&#xff1a;ICC平台&#xff09;&#xff0c;是一套基于智能物联的综合业务管理平台软件&#xff0c;具备强大的后台服务能力&#xff0c;配套了B/S管理员端、C/S客户端、移动APP终端、小程序等…

mmlspark.lightgbm.LightGBMClassifier参数说明

mmlspark.lightgbm.LightGBMClassifier 是一个用于二元分类和多类分类的机器学习模型&#xff0c;它是基于 Microsoft ML for Apache Spark (MMLSpark) 库的。这个类是为了在Spark环境中使用LightGBM实现&#xff0c;提供了大量的参数用于调整模型。下面是一些主要参数的详细中…

数据分析之Excel的使用

数据分析之Excel的使用 SUM()求和SUMIF()单条件求和SUMIFS()多条件求和日期函数YEAR()提取年份MONTH()提取月份DAY()提取日 SUBTOTAL()聚合函数IF()函数IF嵌套 VLOOKUP()搜索取值MATCH()返回行值或列值INDEX()定位取值 SUM()求和 SUMIF()单条件求和 SUMIFS()多条件求和 日期…

python的类修饰器

类修饰器有 staticmethodclassmethod staticmethod 函数传参不会传实例 classmethod 函数传参的第一个参数是类&#xff0c;不是实例

nacos闪退无法正常启动bug

配置java的时候要配置JAVA_HOME 不能直接在path中用jdk的bin路径&#xff0c;不然会报错&#xff0c;虽然你能够正常使用java&#xff0c;但还是会报错 这是报错信息 //bin/java -Djava.ext.dirs//jre/lib/ext://lib/ext -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize128…

vue中性能优化

目录 1. 编码优化 2. 源码优化 3. 打包优化 4. 利用 Vue Devtools 总结 Vue.js 作为一个强大的前端框架&#xff0c;提供了丰富的功能和工具来帮助开发者构建高效的 Web 应用。然而&#xff0c;在开发过程中&#xff0c;性能优化仍然是一个需要关注的问题。以下是对 Vue.j…

华为OD机考-C卷

文章目录 攀登者问题停车场最短路径 攀登者问题 24/03/09 20:50~23:10 攀登者喜欢寻找各种地图&#xff0c;并且尝试攀登到最高的山峰。地图表示为一维数组&#xff0c;数组的索引代表水平位置&#xff0c;数组的元素代表相对海拔高度。其中数组元素0代表地面。一个山脉可能有多…

GTH手册学习注解

CPLL的动态配置 终于看到有这个复位功能了 QPLL SWITCHing需要复位 器件级RESET没发现有管脚引出来 两种复位方式&#xff0c;对应全复位和器件级复位 对应的复位功能管脚 改那个2分频的寄存器说明段&#xff0c;复位是自动发生的&#xff1f;说明可能起效了&#xff0c;但是分…

Linux 之七:Linux 防火墙 和进程管理

防火墙 查看防火墙 查看 Centos7 的防火墙的状态 sudo systemctl status firewalld。 查看后&#xff0c;看到active(running)就意味着防火墙打开了。 关闭防火墙&#xff0c;命令为&#xff1a; sudo systemctl stop firewalld。 关闭后查看是否关闭成功&#xff0c;如果…