2015-11-22 20 views
-1

我有一個查詢集,返回轉換列表後的json字符串。django python:如何使json從Django查詢集

[{"pid": 1, "loc": "KL", "sid": 1, "sd": "south-1"}, 
{"pid": 1, "loc": "KL", "sid": 2, "sd": "north-5"},  
{"pid": 1, "loc": "KL", "sid": 3, "sd": "west-3"} 
] 

我已經嘗試了許多串行選擇,但不知道如何作出上述爲:

[{"pid": 1, 
    "s": [{"sid": 1, "sd": "south-1", 
     "sid": 2, "sd": "north-5", 
     "sid": 3, "sd": "west-3" 
     }] 
}] 

回答

2

首先,有一個在你的預期輸出錯誤。你大概的意思是:

[{"pid": 1, 
    "s": [{"sid": 1, "sd": "south-1"}, 
     {"sid": 2, "sd": "north-5"}, 
     {"sid": 3, "sd": "west-3"} 
     ], 
    "loc": "KL" 
}] 

s應該是一個字典列表,而不是一個字典(和衝突鍵)。我已添加"loc": "KL",因爲它看起來像缺少了。

假設每個查詢只能返回相同pidloc,您可以創建s與原查詢中的每個sidsd列表:

>>> q = ... # as above 
>>> r = {"pid": q[0]["pid"], "loc": q[0]["loc"]} # since pid and loc are always the same 
>>> r["s"] = [{"sid": x["sid"], "sd": x["sd"]} for x in q] 
>>> print r 
[{'pid': 1, 
    's': [{'sid': 1, 'sd': 'south-1'}, 
     {'sid': 2, 'sd': 'north-5'}, 
     {'sid': 3, 'sd': 'west-3'} 
     ], 
    'loc': 'KL' 
}] 
>>> print json.dumps(r) # gives the output as a json string 
+0

親愛的空盒,按預期工作,但問題是它需要從mysql表處理1millian記錄的時間太多了。 – sen