信息統計DashBoard踩坑總結
最近根據需求用Tornado框架在寫了一個從數據庫統計Redis服務器的數量、內存等信息的接口,並寫了一個從接口獲取數據並推送至grafana進行展示的程序。現在已經實現所有功能,現將實現過程中遇到的問題總結出來,以便後續參考。歡迎批評指正,共同學習進步!
一、數據庫操作中的坑
1、mysql查詢中想要傳入變量時like的使用
在數據庫的查詢操作中想要查找包含北京二字的字段,like的用法為:
idc like %北京%
在python操作mysql時,需要拼接字符串然後進行處理,這時的用法為:
idc like ‘%%%%%s%%%%‘
2、mysql嵌套查詢中{ }的使用
在之前的mysql嵌套查詢中我試圖通過拼接字符串來實現,後來發現有如下用法:
ctime = ‘{y_day}‘
其中y_day即為需要傳入的變量
二、字典相關
在從數據庫中取到數據存入字典為unicode。如果直接打印字典為unicode編碼,漢字無法識別,有兩種解決辦法:
for key,value in result_dic.items():
首先通過上述方法取到字典的key、value,然後輸出或者拼接成字符串輸出,這樣都不會出現中文亂碼問題
三、從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)
本文出自 “10917734” 博客,請務必保留此出處http://10927734.blog.51cto.com/10917734/1959827
信息統計DashBoard踩坑總結