工作中代码测试的流程一般是先在测试环境运行,测试稳定通过以后,再将代码放到生产环境进行调度,这时候就需要将数据库链接更换一下,如果每次都这样改动,岂不是太麻烦了,如果从面向对象的角度去考虑,我们将代码从测试扔到生产也不用改动(或者改动很小)就会帮我们省掉很多事情,需要做什么,无非就是将数据库的链接密码替换,config配置这时候就来帮我们做这件事.
在测试环境里设置一个config,里面是测试数据库链接,我们后面代码链接数据库就是通过读取配置文件去自动链接,同时我们将配置文件拷贝到生产环境,将链接替换掉,那么我们代码就不用去修改,直接上传就好了.
一.configparser模块
config文件有的是config.ini这样的,解析这个文件python3版本以上也有相应的包 configparser去解析,下面是文件截图和解析代码 config.ini解析代码:
import configparser
Config = configparser.ConfigParser()
Config.read("config.ini")
data = Config.sections()
print(data)
db_host = Config.get("db", "db_host")
print(db_host)
result
二.yaml模块
第二种config文件是config.yaml,用到的是YAML语言,它是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。 yaml介绍comfig.yaml
import os
import yaml
config_file = os.path.dirname(os.path.realpath(__file__)) + '/config.yaml'
configs = yaml.load(open(config_file,'r'))
conns = configs.get('mysql.config')['conn']
for k,v in conns.items():
print(k,'====:',v)
yaml result
为了方便调用,将其封装一下
import os
import yaml
class ConfigParser(object):
config_file = os.path.dirname(os.path.realpath(__file__)) + '/config.yaml'
configs = yaml.load(open(config_file,'r'))
@classmethod
def get(cls, server='mysql.config',key=None):
if not cls.configs:
cls.configs = yaml.load(open(cls.config_file, 'r'))
section = cls.configs.get(server, None)
if section is None:
raise NotImplementedError
value = section.get(key, None)
if value is None:
raise NotImplementedError
return value
if __name__ == '__main__':
configs = ConfigParser()
mysql_conn = configs.get(key='conn')
print(mysql_conn)
三.说明
文章转载自个人微信公众号pythonfan,接入了图灵机器人,图片 语音 都支持回复...
转载文章请备注来源!
微信公众号:pythonfan
网友评论