gpt4 book ai didi

python - 在 sqlalchemy 中,如何通过使列条目相同来组合两个查询?

转载 作者:太空狗 更新时间:2023-10-30 00:45:56 24 4
gpt4 key购买 nike

假设我有一个映射类User,映射到一个同名的表,还有一个“age”列代表他的年龄。我现在对以下问题感兴趣:

在我的申请过程中,出现了两个问题:

q1 = session.query(User).filter(lots of conditions)
q2 = session.query(User).filter(lots of other conditions)

我现在想将 q2“加入”到 q1,条件是他们年龄相同。但我不知道这是如何工作的。我尝试了以下但没有成功:

q1.join(q2.subquery(), q1.age==q2.age) # the query doesn't hold the columns of the queried class
q1.join(Age).join(q2.subquery()) # Works only if age is a relationship with mapped class Age

我最近的电话是这样的:

a1 = aliased(User)
a2 = aliased(User)
q1 = session.query(a1)
q2 = session.query(a2)
s = q2.subquery()
q1.join(s, a1.age==a2.age).all()
>>> sqlalchemy.exc.OperationalError: (OperationalError) no such column: user_2.age 'SELECT user_1.id AS user_1_id, user_1.name AS user_1_name, user_1.age AS user_1_age \nFROM user AS user_1 JOIN (SELECT user_2.id AS id, user_2.name AS name, user_2.age AS age \nFROM user AS user_2) AS anon_1 ON user_1.age = user_2.age' ()

关于如何进行此运行有任何想法吗?

最佳答案

在摆弄和阅读有关子查询问题的答案之后,我设法找到了解决方案。而不是最后一行,有问题的行,放:

q1.join(s, a1.age==s.columns.age).all()

这样,on 子句就变成了 ON user_1.age = anon_1.age,这就是我们想要的。

关于python - 在 sqlalchemy 中,如何通过使列条目相同来组合两个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com