当我检查查询的结果时,它看起来像一个列表列表.我想返回一个dicts列表,将列名映射到结果值.如何将结果行转换为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)]
Run Code Online (Sandbox Code Playgroud)
dav*_*ism 18
结果看起来像元组/列表,但它们实际上是一个特殊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}]
Run Code Online (Sandbox Code Playgroud)
Leo*_*arr 11
在 Python 3.7 / SQLAlchemy 1.3.18 中,这对我有用:
return [dict(r) for r in results]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4509 次 |
| 最近记录: |