我正在尝试array_agg
对子查询进行嵌套操作,我得到了sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'ImmutableColumnCollection'
. 我目前有一个工作(更简单)的查询和后续itertools.groupby
操作,但我试图将所有内容都作为查询。
这是简化的代码:
sq = db.session.query(Item.sku, Item.price, func.array_agg(Attribute.value))\
.select_from(Item)\
#various filters
.join(Attribute)\
.group_by(Item.sku, Item.price)\
.subquery()
q = db.session.query(Item.group, func.array_agg(sq.c))\
.group_by(Item.group_id)\
.all()
所以它似乎在抱怨,因为array_agg
需要一个明确的type
并且它无法处理ImmutableColumnCollection
子查询的“返回”。我不完全了解如何c
使用,所以我怀疑我sq.c
的问题。