在SQLAlchemy中,能否根据关联记录的类型过滤多态关联模型?

0 投票
1 回答
594 浏览
提问于 2025-04-16 12:02

我在使用SQLAlchemy中的多态关联,具体可以参考这个例子。你也可以在SQLAlchemy的源代码中的示例目录找到相关内容。

在这样的设置下,我想查询所有与User(用户)相关联的Address(地址)。这里不是指某个特定的用户,而是指所有用户。

如果用原始SQL,我可以这样做:

select addresses.* from addresses 
join address_associations 
on addresses.assoc_id = address_associations.assoc_id
where address_associations.type = 'user'

有没有办法通过ORM会话来实现这个查询呢?

我是否可以直接运行这段原始SQL,然后把Address类应用到结果中的每一行?

1 个回答

2

使用ORM进行临时连接的相关内容可以在这里找到:

http://www.sqlalchemy.org/docs/orm/tutorial.html#querying-with-joins

for address in sess.query(Address).join(Address.association).filter_by(type='users'):
    print "Street", address.street, "Member", address.member

撰写回答