我正在使用带有 sqlalchemy ORM 的 Postgresql
我正在尝试使用子查询返回查询中的类数组。
subquery1 = session.query(Coupon).filter(Coupon.date > today)
subquery2 = session.query(Coupon).filter(Coupon.rate > 5)
result = session.query(User,func.array(subquery1.label("active")),
func.array(subquery1.label("expensive")))
这会引发错误
<块引用>(psycopg2.errors.SyntaxError) 子查询只能返回一列
当我只从 subquery1 和 2 session.query(Coupon.id)
查询 id 时,它工作正常并返回可以使用 result[1] 和 result[2] 访问的 id 列表,这正是我想要的,除了我需要包含所有属性的完整类,而不仅仅是属性。
当前的结果类似于
[(<User object at 0x000001E88378F2E0>, [5,3], [])]
我希望它是这样的
[(<User object at 0x000001E88378F2E0>, [<Coupon object at 0x000001E88378F2E0>,<Coupon object at 0x000001E88378F2E0>], [])]
我也喜欢用 1 个查询而不是 3 个查询来完成
类 Coupon
和 User
由包含 user_id 和coupon_id 但不相关的第三个表连接