SQLAlchemy使用Junction表连接2个表

时间:2018-04-22 03:29:15

标签: python postgresql sqlalchemy

我正在使用SQLAlchemy学习SQL-Python,并会对此有所帮助。

我有3张桌子,

表1(演员):nconst(主键),名称

表2(电影):tconst(主键),标题

表3(交汇表):nconst(来自Actors表),tconst(来自Movies表)

我正在尝试获得10行特定电影的演员。因此,我试图在Junction表上使用Actors(使用nconst),然后在Movies表上进行另一个内连接。

在SQL中,这意味着

FROM principals INNER JOIN actors 
ON principals.nconst=actors.nconst INNER JOIN
movies ON principals.tconst=movies.tconst 

在SQLAlchemy中,我当前的代码是:

mt = list(session.query(Movies, Principals, Actors).select_from(
join(Movies, Principals, Movies.tconst == Principals.tconst)
.join(Actors, Principals, Actors.nconst == Principals.nconst 
).with_entities(
Movies.title,  # Select clause
))

或者,我正在尝试

from sqlalchemy.orm import join
mv = list(session.query(Actors).select_from(
join(Movies, Principals, Actors, Movies.tconst == Principals.tconst, 
Actors.nconst == Principals.nconst)  # Join clause
).with_entities(
Actors.name,  # Select clause
Movies.title,
))
mv

我得到的错误是属性错误,“Actor类型对象'Actors'没有属性'_from_objects'

对此表示赞赏。非常感谢你。

0 个答案:

没有答案