将具有多行的查询结果作为结果导入单行

时间:2013-03-13 17:38:23

标签: python mysql python-2.7 tuples

无论如何都要将mysql查询结果作为

(id,result1,[result21,result22, result23])

我正在尝试检索第三列是时间戳的结果,它对应于相同的ID。

例如我的结果是

(21,29383)
(21,23988)
(22,23455)
(22,34564)

我希望结果为

(21,(29383,23988))
(21,(223455,34564))

1 个答案:

答案 0 :(得分:2)

我不熟悉MySQL,但是如果你将结果作为Python元组,你就可以操纵Python端的数据结构。一种可能的方式是:

from collections import defaultdict

results = [
    (21,29383),
    (21,23988),
    (22,23455),
    (22,34564)
]

d = defaultdict(list)

for your_id, result in results:
    d[your_id].append(result)

results_as_tuples = tuple(
    sorted([
        (your_id, tuple(results)) for your_id, results in d.iteritems()
    ])
)

print results_as_tuples # --> ((21, (29383, 23988)), (22, (23455, 34564)))