没有with_parent方法,我使用的是SQLAlchemy2.0,重新给出方法
时间: 2024-03-05 22:53:59 浏览: 117
抱歉,我的回答中使用的 `with_parent()` 方法是 SQLAlchemy 1.x 版本的用法,确实不适用于 SQLAlchemy 2.0。在 SQLAlchemy 2.0 中,可以使用 `aliased()` 方法来创建一个表的别名,然后使用 `join()` 方法指定关联条件,如下所示:
```python
from sqlalchemy.orm import aliased, joinedload
# 创建 Address 表的别名
address_alias = aliased(Address)
# 使用 joinedload 进行关联查询
users = session.query(User).options(
joinedload(User.address).join(
address_alias, User.address_id == address_alias.id
).filter(address_alias.street == '123 Main St')
).all()
# 打印查询结果
for user in users:
print(user.name, user.address.city, user.address.state)
```
上述代码中,我们首先使用 `aliased()` 方法创建了一个 `Address` 表的别名 `address_alias`,然后在关联查询中使用 `join()` 方法指定 `User.address_id == address_alias.id` 作为关联条件,并使用 `filter()` 方法来指定 `address_alias.street == '123 Main St'` 作为查询条件。最后使用 `options()` 方法将关联查询选项传递给 `query()` 方法。
阅读全文