无法使用包含操作编写 SqlAlchemy 查询

Can't write SqlAlchemy query with contains operation

假设我们有两个表:MovieGenre。流派有一个属性 genres ,它是流派 ID 的 PostgreSQL 数组。我已经编写了一个查询来获取所有带有流派名称的电影 ID。

session.query(Movie.id, Genre.name).join(Genre, Movie.genres.contains([Genre.id])).all()

但遗憾的是我得到:

ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'InstrumentedAttribute'

那么,我怎样才能重写我的查询以获得我想要的?

删除方括号 [] 并使用 any:

session.query(Movie.id, Genre.name).join(Genre, Movie.genres.any(Genre.id))

生成SQL:

SELECT movie.id AS movie_id, genre.name AS genre_name 
FROM movie 
JOIN genre ON genre.id = ANY (movie.genres)