将sqlalchemy查询结果转换为dicts列表

时间:2013-07-18 08:01:12

标签: python sqlalchemy

我希望将查询结果转换为这样的字典列表:

result_dict = [{'category': 'failure', 'week': '1209', 'stat': 'tdc_ok', 'severityDue': '2_critic'}, {'category': 'failure', 'week': '1210', 'stat': 'tdc_nok', 'severityDue': '2_critic'}]

但我把它作为一个字典,因此重复键:

result_dict = {'category': 'failure', 'week': '1209', 'stat': 'tdc_ok', 'severityDue': '2_critic', 'category': 'failure', 'week': '1210', 'stat': 'tdc_nok', 'severityDue': '2_critic'}

我通过这样做得到了这个结果:

for u in my_query.all():
     result_dict = u.__dict__

如何将sqlAlchemy查询结果转换为dicts列表(每行都是dict)?

请帮助

4 个答案:

答案 0 :(得分:10)

尝试

result_dict = [u.__dict__ for u in my_query.all()]

除了result_dict循环之前你的 for的类型是什么?这种行为很奇怪。

答案 1 :(得分:2)

没有.all()

您可以尝试:

result_dict = [u.__dict__ for u in my_query.fetchall()]

答案 2 :(得分:1)

现在可以使用

result_dict = [u._asdict() for u in my_query.all()]

原因是你实际上并不是一个元组,而是一个KeyedTuple。

thread上的正确答案也会有所帮助

答案 3 :(得分:0)

不确定这是否是因为自原始帖子以来已经过了几年,但是以下对我有用(其他人没有)...

result_dict = [dict(u) for u in my_query.fetchall()]

我在核心而不是ORM中工作。