信息统计DashBoard踩坑总结

    最近根据需求用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)
相关文章
相关标签/搜索