With SQLAlchemy I want to reproduce the available aggregate function jsonb_object_agg from a subquery sq_objects
:
from sqlalchemy import select,
Not the most elegant implementation, but since I now the labels of the subquery columns; a raw text
input solves the issue:
func.jsonb_object_agg(
text("sq_objects.keys"),
text("sq_objects.values")
).over(
partition_by=sq_objects.c.object_id).label("attributes"),
The problem is that the attributes keys
and values
are methods of the immutable column collection sq_objects.c
. Another solution to the problem is to use item access notation for getting the actual columns:
func.jsonb_object_agg(
sq_objects.c["keys"],
sq_objects.c["values"]
).over(
partition_by=sq_objects.c.object_id
).label("attributes")