2015-07-25 3 views
7

Когда я просматриваю результаты запроса, он выглядит как список списков. Я хочу вернуть список имен столбцов dicts для значений результата. Как преобразовать строки результатов в dicts?Возвращает результаты SQLAlchemy как 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)] 

ответ

11

Результаты выглядят как кортежей/списки, но они на самом деле специальный KeyedTuple объект. Используйте метод _asdict() для преобразования каждой строки в 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}] 
Смежные вопросы