简体   繁体   中英

convert sqlalchemy query result to a list of dicts

I want to have the result of my query converted to a list of dicts like this :

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

But instead I get it as a dict, thus with repeated keys:

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

I get this result by doing this :

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

How can I convert sqlAlchemy query result to a list of dicts (each row would be a dict) ?

Help please

Try

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

Besides what is the type of your result_dict before the for loop? Its behavior is rather strange.

There's no .all()

You can try:

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

This works now

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

The reason is that u is not actually a tuple but a KeyedTuple.

The correct answer on this thread also would be helpful

Not sure if this is because a few years have passed since the original post, but the following works for me (the others did not)...

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

I am working in core, not ORM.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM