分享pythonflask框架的中配置文件加载的五种使用方法

这篇文章分享python flask框架的中配置文件加载的五种使用方法

flask配置文件管理的几种方式:

方法一:直接配置

#!/usr/bin/env python
# encoding: utf-8
from flask import flask
import time
app = flask(__name__)
app.config[‘send_file_max_age_default’]=time.asctime()
app.config[‘host’]=’www.aolens.cn’
print app.config
@app.route(‘/’)
def hello_world():
return ‘hello world! %s %s’ %(app.config.get(‘send_file_max_age_default’),app.config.get(‘host’))
if __name__==’__main__’:
app.run()

可以看到一个全局的大字典:

方法二:通过环境变量加载配置

创建一个环境变量文件。config.py

#内容为键值,不一定要是大字典里的
host=localhost
post=3306 #自己创建
export config_set=./config.py
代码中:
app.config.from_envvar(‘config_set)
@app.route(‘/’)
def hello_world():
return “hello world %s %s” %(app.config.get(‘host’),app.config.get(‘post’))

方法三:通过对象加载(常用)--from_object()

config对象代码--采用了 基于类继承的config结构,保存默认配置的config类作为基类,其他类继承之。

创建一个文件configlist.py

#!/usr/bin/env python
# encoding: utf-8
class config(): #父类可以被下边的类继承到author参数
author=’aolens’
class developmentconfig(config):
debug = true
sql_uri=’mysql://root:password@192.168.1.101/test’
class productionconfig(config):
sql_uri=’mysql://root:password@192.168.1.101/devops’
host=’localhost’
config ={ #将类写成字典的形式存储
‘dev’:developmentconfig,
‘pro’:productionconfig,
‘default’:developmentconfig
}

调用configlist.py

#!/usr/bin/env python
# encoding: utf-8
from flask import flask
from configlist import *
import time
app = flask(__name__)
#对象加载,from config import *
#第一种加载方式
app.config.from_object(productionconfig)
#第二种加载方式,加载简写的config短也可以加载的到
#app.config.from_object(config[‘pro’])
print app.config
@app.route(‘/’) #/表示url后边+/,也可使其他uri,访问就是ip+uri
def hello_world():
return ‘hello world! %s %s %s’ %(app.config.get(‘sql_uri’),app.config.get(‘host’),app.config.get(‘author’))
if __name__==’__main__’:
app.run()

浏览器访问结果:

hello world! mysql://root:password@192.168.1.101/devops localhost aolens

如何判断测试环境还是生产:
#!/usr/bin/env python
# encoding: utf-8
from flask import flask
from config2 import *
import os
import time
app = flask(__name__)
if os.path.exists(“./pro”):
app.config.from_object(config[‘pro’])
elif os.path.exists(“./dev”):
app.config.from_object(developmentconfig)
print app.config
@app.route(‘/test’)
def hello_world():
return ‘hello world! %s %s %s’ %(app.config.get(‘sql_uri’),app.config.get(‘host’),app.config.get(‘author’))
if __name__==’__main__’:
app.run()

方法四:通过配置文件--app.config.from_pyfile,config文件必须在app目录下

vim confile.py
host=’locolhost’
port=10000
author=’aolens’
from flask import flask
app.config.from_pyfile(‘./confile.py’) #加载配置文件
print app.config
@app.route(‘/test’)
def hello_world():
return ‘hello world! %s %s %s’ %(app.config.get(‘port’),app.config.get(‘host’),app.config.get(‘author’))
if __name__==’__main__’:
app.run()

方法五:是对方法四的一种改进 configparser模块 配置文件管理

configparser简介:

是用来读取配置文件的包,配置文件中括号[]内包含的为session。section下面为类似于key-value的配置文件内容。

格式如下:

vim test.conf
[api] #session
port=11111 #option
path=/data/api/log
[web]
port=1002
path=/data/web/log

使用:confile.py

import configparser
def getconfig(filename,section=”):
cf=configparser.configparser() #实例化
cf.read(filename) #读取配置文件
cf_items = dict(cf.items(section)) if cf.has_section(section) else {} #判断section是否存在,存在把数据存入字典,没有返回空字典
return cf_items
if __name__==’__main__’:
conf =getconfig(‘test.conf’,’web’)
print conf
print conf[‘port’]
print conf.get(‘path’)

运行结果:

{‘path’: ‘/data/web/log’, ‘port’: ‘1002’}

1002

/data/web/log

调用:demo.py

#!/usr/bin/env python
# encoding: utf-8
from confile import getconfig
from flask import flask
app = flask(__name__)
#直接配置
@app.route(‘/test’)
def hello_world():
conf=getconfig(‘test.conf’,’api’)
return ‘hello world! %s’ %(conf[‘port’])
if __name__==’__main__’:
app.run()

结果:

hello world! 11111 #option

以上就是分享python flask框架的中配置文件加载的五种使用方法的详细内容,更多请关注 第一php社区 其它相关文章!

Posted in 未分类

发表评论