[英]SQLAlchemy query using contains, array casting and subqueries
将以下查询转换为SQLAlchemy查询的任何帮助将不胜感激:
select * from app where (select app_ids from user where user_id=12345) @> array[app_id];
我已经尝试了许多公式,但是都由于一种或另一种原因而失败,这是一个失败的示例,因为ARRAY对象没有contained_by方法:
subq = self.session.query(objects.User.app_ids).filter(objects.User.user_id == 12345).subquery('subq')
self.session.query(objects.App).filter(postgresql.ARRAY(objects.App.app_id).contained_by(subq.c.app_ids)).all()
我也尝试了以下等效的原始查询,但没有任何运气。 也许这些会更容易翻译吗?
select * from app where array[app_id] <@ (select app_ids from user where user_id=12345);
select * from app where app_id=ANY((select app_ids from user where user_id=12345)::integer[]);
所有这些原始查询都可以在postgres中正常工作。
谢谢。
找到了any()公式,结果证明它是最适合任何大量条目的方法:
subq = session.query(objects.User.app_ids).filter(objects.User.user_id == 12345)
results = session.query(objects.App).filter(
objects.App.id == sqlalchemy.func.any(sqlalchemy.cast(subq.as_scalar(), postgressql.ARRAY(sqlalchemy.Integer))
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.