Sqlalchemy SQL炼金术返回ID列表

Sqlalchemy SQL炼金术返回ID列表,sqlalchemy,pylons,Sqlalchemy,Pylons,我正在使用SQL Alchemy,我想返回一个文档ID列表。ID是documents表中的主键。我当前的查询返回一个元组列表 userDocs = session.query(Document.idDocument).filter(Document.User_idUser == user.idUser).all() 我想要一个ID列表的原因是,这样我就可以使用in(userDocs)搜索另一个表 因此,另一个解决方案是能够使用元组进行搜索。目前,我使用userDocs从第二个查询中没有返回任何

我正在使用SQL Alchemy,我想返回一个文档ID列表。ID是documents表中的主键。我当前的查询返回一个元组列表

userDocs = session.query(Document.idDocument).filter(Document.User_idUser == user.idUser).all()
我想要一个ID列表的原因是,这样我就可以使用in(userDocs)搜索另一个表

因此,另一个解决方案是能够使用元组进行搜索。目前,我使用userDocs从第二个查询中没有返回任何内容


谢谢

您不需要进行中间查询,您可以一次完成所有查询

things = session.query(Things) \
                .join(Thing.documents) \
                .filter(Document.User_idUser==user.idUser)

您只需通过其在目标实体上的
关系()
查询文档的属性。

我同意@TokenMacGuy:您只需通过向
文档
表中添加
联接
并向其添加
过滤器来扩展您的(第二个)查询。这样,您将在一个查询(一个
SQL
语句)中得到结果。即使您在
事物
文档
之间没有
关系
,您仍然可以使用显式条件
加入
。更不用说
中的
操作符通常可能是次优的()谢谢。很好,我没有考虑使用它的关系来过滤。我尝试了一些嵌套查询的实验,结果不是很好,但这似乎是最好的方法。谢谢我想你指的是查询(Things).join(Thing.documents).filter(Document.User\u idUser==User.idUser),你不能直接从Thing.documents导航到下一个实体(SQLA不会隐式连接)