- 此问题在此处已有答案**:
Retrieve query results as dict in SQLAlchemy(4个答案)
5小时前关门了。
当我检查查询结果时,它看起来像一个列表的列表。我想返回一个将列名Map到结果值的字典列表。我如何将结果行转换为字典?
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)]
3条答案
按热度按时间wtzytmuj1#
结果 * 看起来 * 像元组/列表,但它们实际上是一个特殊的
Row
对象(对于SQLAlchemy〈1.4,KeyedTuple
)。使用_asdict()
方法将每行转换为一个dict。vdgimpew2#
在Python 3.7 / SQLAlchemy 1.3.18中,这对我来说是有效的:
htrmnn0y3#
从SQLAlchemy 1.4及更高版本开始,Query返回的“KeyedTuple”对象被Row替换。
这意味着这将不再起作用:
我能够通过以下细微的更改使它在SQLAlchemy 2.0中工作: