无法使用包含操作编写 SqlAlchemy 查询
Can't write SqlAlchemy query with contains operation
假设我们有两个表:Movie 和 Genre。流派有一个属性 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)
假设我们有两个表:Movie 和 Genre。流派有一个属性 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)