Returns SQLAlchemy results as dicts instead of lists

When I look at the results of a query, it looks like a list of lists. I want to return a list of dicts column names for result values. How to convert result strings to dicts?

results = db.session.query( PendingPost.campaign_id.label('campaign_id'), Campaign.title.label('title'), sqlalchemy.func.count(PendingPost.status).label('status_count'), ).join( Campaign, Campaign.id == PendingPost.campaign_id, ).join( Areas, Areas.id == PendingPost.area_id ).filter( sqlalchemy.func.month(PendingPost.creation_date) == datetime.datetime.utcnow().month ).group_by( PendingPost.status, PendingPost.campaign_id, ).all() print(results) [(3, 'campaign title', 1), (4, 'campaign title', 1)] 
+7
python sqlalchemy
source share
1 answer

The results look like tuples / lists, but in reality they are a special KeyedTuple object. Use the _asdict() method to convert each line to a dict.

 return [r._asdict() for r in results] [{'campaign_id': 3, 'title': 'campaign title', 'status_count': 1}, {'campaign_id': 4, 'title': 'campaign title', 'status_count': 1}] 
+12
source share

All Articles