在SQLAlchemy中查询多对多关系

som*_*off 15 python sqlalchemy

我有一个非常标准的多对多关系,类似于ORM教程中的Blog - > Keyword关系.

我想查询关键字列表,返回其中任何一个匹配的博客帖子.但是,如果有一个简单的方法可以解决这个问题我就无法解决.如果我添加多个过滤器,反复做

.filter(Blog.keywords.any(Keyword.name == 'keyword')) 
Run Code Online (Sandbox Code Playgroud)

然后我得到一个'AND'/'EXISTS'查询,这样只返回包含所有这些关键字的帖子.是否有一种简单的方法可以将此作为"OR"查询,或者我是否需要使用join().

谢谢你的帮助; 我无法弄清楚我是否遗漏了什么.

Mu *_*ind 22

我想你只是想要

.filter(Blog.keywords.any(Keyword.name.in_(['keyword1', 'keyword2', ...])))
Run Code Online (Sandbox Code Playgroud)

我正在使用http://www.sqlalchemy.org/docs/05/ormtutorial.html#common-filter-operators作为参考

  • 如果你想快速尝试:.join(Blog.keywords).filter(Keyword.name.in _(['keyword1',...]) (11认同)