最近根據需求用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)