当我检查查询结果时,它看起来像一个列表列表。我想返回一个将列名称映射到结果值的dict列表。如何将结果行转换为dict?

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)]

最佳答案

结果看起来像元组/列表,但实际上它们是一个特殊的对象。使用KeyedTuple方法将每行转换为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}]

关于python - 返回SQLAlchemy结果作为dicts而不是列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31624530/

10-10 21:54
查看更多