最近根据需求用Tornado框架在写了一个从数据库统计Redis服务器的数量、内存等信息的接口,并写了一个从接口获取数据并推送至grafana进行展现的程序。如今已经实现全部功能,现将实现过程当中遇到的问题总结出来,以便后续参考。欢迎批评指正,共同窗习进步!python
1、数据库操做中的坑mysql
一、mysql查询中想要传入变量时like的使用
web
在数据库的查询操做中想要查找包含北京二字的字段,like的用法为: sql
idc like %北京%
在python操做mysql时,须要拼接字符串而后进行处理,这时的用法为:数据库
idc like '%%%%%s%%%%'
二、mysql嵌套查询中{ }的使用
json
在以前的mysql嵌套查询中我试图经过拼接字符串来实现,后来发现有以下用法:
api
ctime = '{y_day}'
其中y_day即为须要传入的变量浏览器
2、字典相关服务器
在从数据库中取到数据存入字典为unicode。若是直接打印字典为unicode编码,汉字没法识别,有两种解决办法:框架
for key,value in result_dic.items():
首先经过上述方法取到字典的key、value,而后输出或者拼接成字符串输出,这样都不会出现中文乱码问题
3、从Tornado获取数据中文乱码的问题
在实现了web框架以后,在浏览器输入url进行测试,未发现任何问题。但在代码中使用urllib模块调用函数,从接口获取到数据,中文传递会出现乱码,致使没法正确获取到数据,先怀疑是Tornado设置上的问题或者是urllib模块设置上的问题,但各类找都没有解决,后来请教同事解决了这一问题。主要缘由是urllib编码问题,解决方法以下:
api_domain = '10.100.100.100:8080' args_dict = {'type': 'mechine', 'pool_name': 'none', 'idc': '北京'} url_v = urllib.urlencode(args_dict) url = "http://%s/?%s" % (api_domain, url_v) print url response = urllib2.urlopen(url) data = response.read() print json.dumps(data)