SQL では、次のような一連の行を取得できます。
SELECT * FROM table WHERE id in (2,3,5,7,11);
同等の sqlalchemy クエリはどのように見えますか? cls.id in [2,3,5,7,11]
に評価されるFalse
ため、このコードは次のようになります。
q = meta.Session.query(cls)
q = q.filter(cls.id in [2,3,5,7,11])
return q.all()
例外で失敗します:
File "foo.py", line 1234, in findall_by_ids
q = q.filter(cls.id in [2,3,5,7,11])
File "<string>", line 1, in <lambda>
File "/eggs/sqlalchemy/orm/query.py", line 50, in generate
fn(self, *args[1:], **kw)
File "/eggs/sqlalchemy/orm/query.py", line 1177, in filter
"filter() argument must be of type "
ArgumentError: filter() argument must be of type sqlalchemy.sql.ClauseElement
or string