首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

优化从mongdb取数据python代码,用以出fusioncharts图

2012-11-08 
优化从mongdb取数据python代码,用于出fusioncharts图原始代码?def ioBandwidth(request):beginDate requ

优化从mongdb取数据python代码,用于出fusioncharts图

原始代码

?

def ioBandwidth(request):    beginDate = request.GET.get("beginDate")    collection = getCollection()    data = collection.find().sort("InsertDate",pymongo.ASCENDING)    mscombi2d.categories = {"category": [{"label":time.strftime("%H:%M",time.strptime(d["InsertDate"],"%Y-%m-%d %H:%M:%S"))} for d in data]}    data.rewind()#因为开始是用find返回的,所以是游标,取完后要回退到开始才能重新取    temp = data.clone()#因为后面有两次,只能先把游标拷贝,以方便后面的取值    mscombi2d.dataset = [            {"seriesname": u"入带宽", "parentyaxis": "P", "color": "5a885e","renderas":"Area",             "data": [{"value": (d["InBandwidth"])} for d in data]        },            {"seriesname": u"出带宽", "parentyaxis": "S", "renderas": "Line", "color": "dca657", "anchorbgcolor": "dca657",             "data": [{"value": (d["OutBandwidth"])} for d in temp]        }    ]    res = json.dumps(mscombi2d.to_dict(), ensure_ascii=False, sort_keys=True, indent=4)    return HttpResponse(res)

?

修改后代码

?

?

def ioBandwidth(request):    beginDate = request.GET.get("beginDate")    collection = getCollection()    data = [d for d in collection.find()]#把游标内数据存入list    mscombi2d = MSCombi2D(u"大节点带宽",beginDate)    mscombi2d.categories = {"category": []}    mscombi2d.dataset = [            {"seriesname": u"入带宽", "parentyaxis": "P", "color": "5a885e","renderas":"Area",             "data": []        },            {"seriesname": u"出带宽", "parentyaxis": "S", "renderas": "Line", "color": "dca657", "anchorbgcolor": "dca657",             "data":[]        }    ]    labels = []#时间标签    inband = []#入带宽    outband = []#出带宽    for d in data:        labels.append({"label":time.strftime("%H:%M",time.strptime(d["InsertDate"],"%Y-%m-%d %H:%M:%S"))})        inband.append({"value":"%s"%(d["InBandwidth"])})        outband.append({"value":"%s"%(d["OutBandwidth"])})    mscombi2d.dataset[0]["data"] = inband    mscombi2d.dataset[1]["data"] = outband        res = json.dumps(mscombi2d.to_dict(), ensure_ascii=False, sort_keys=True, indent=4)    return HttpResponse(res)

?

?

1)从游标取出数据存入list,不需要再rewind和clone了

2)只用了一次循环,不像前面循环了三次。

3)查找用索引,而不要用sort

热点排行