Có thể bạn đang làm đúng mọi thứ, nhưng trước tiên hãy lấy các mảng trống. Trong truy vấn trước đó, bạn đã sử dụng tính năng lọc trong python (len(x[1]) > 1
). Bạn có thể in Query
trước khi thực thi nó để đảm bảo.
Bạn có thể nên thêm having
mệnh đề cho truy vấn cơ sở của bạn:
from sqlalchemy import Integer
from sqlalchemy.dialects.postgresql import ARRAY
cats_agg = func.array_agg(ProductCategory.id, type_=ARRAY(Integer)).label('cats')
prods = (
session.query(
Product.id.label('id'),
cats_agg,
.outerjoin(
ProductCategory,
ProductCategory.product_id == Product.id)
.group_by(Product.id)
.having(func.array_length(cats_agg, 1) > 1)
.subquery()
)
Sau đó, bạn cũng sẽ không cần lọc trong python.