Mysql 在sqlalchemy中执行双重内部联接
我有这个SQL查询,我想把它转换成sqlalchemy代码。 我在这里工作的是一个已经存在的生产数据库,这使得它很难更改Mysql 在sqlalchemy中执行双重内部联接,mysql,python-3.x,sqlalchemy,Mysql,Python 3.x,Sqlalchemy,我有这个SQL查询,我想把它转换成sqlalchemy代码。 我在这里工作的是一个已经存在的生产数据库,这使得它很难更改 SELECT B.IDTestung, B.Ber1_Konzentration, T.Testungstyp, T.Timestamp, K.Name_Kl, K.Vorname_Kl FROM BCRS AS B INNER JOIN ttestunge
SELECT B.IDTestung, B.Ber1_Konzentration,
T.Testungstyp, T.Timestamp,
K.Name_Kl, K.Vorname_Kl
FROM BCRS AS B
INNER JOIN
ttestungen AS T on B.IDTestung = T.IDTESTUNG
INNER JOIN
tklienten K on T.IDKLIENT = K.IDKLIENT
因此,基本上是BCRS表,它包含“Testung”的ID,而ttestungen表本身有一个标识客户机的ID。因此,有两个内部联接来组合三个表
我该如何在sqlalchemy中写这个?
到目前为止,我得到的是:
from auswertungen.data.data import Tklienten, BCR, Ttestungen
tests = session.query(BCR).join(Ttestungen.tklienten).all()
这是第一次加入,但我不知道如何加入第二次。我试着在第一个之后再添加一个。join(…),但没有成功
以下是DB定义(摘录):
(使用sqlacodegen自动创建)
您可以在下面尝试:
test = session.query(BCR).join(Ttestungen, BCR.IDTestung == Ttestungen.IDTESTUNG).join(Tklienten, Ttestungen.IDKLIENT == Tklienten.IDKLIENT).all()
可能
tests=session.query(BCR).join(Tklienten.IDTESTUNG).join(Ttestungen.IDKLIENT).all()
?这运行时没有错误,但我仍然没有获取客户端数据(Tklienten中的列)。非常奇怪-(
test = session.query(BCR).join(Ttestungen, BCR.IDTestung == Ttestungen.IDTESTUNG).join(Tklienten, Ttestungen.IDKLIENT == Tklienten.IDKLIENT).all()