将SQLAlchemy查询结果转换为字典列表

20

我希望将我的查询结果转换为类似于以下这样的字典列表:

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查询结果转换为字典列表(每行都是一个字典)? 请帮忙,谢谢。
4个回答

24

试试看

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

除此之外,在for循环之前,你的result_dict的类型是什么?它的行为非常奇怪。


9

这个现在可以使用了

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

原因是u实际上不是元组,而是KeyedTuple。
这个线程上的正确答案也会很有帮助。

[ row.dict for row in User.query.all() ]: - Amin Golmahalle

3

没有 .all()

你可以尝试:

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

4
这取决于你是否正在使用ORM(原始帖子没有指定)。.all()是ORM查询的fetchall()代理。 - cowbert

1

我不确定是因为原帖已经过去几年了,但以下方法对我有效(其他方法无效)...

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

我正在核心部分工作,而不是ORM。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接