In SQL, posso ottenere una serie di righe come questa:query per valori multipli in una sola volta
SELECT * FROM table WHERE id in (2,3,5,7,11);
Come funziona la query sqlalchemy equivalente guardare? cls.id in [2,3,5,7,11]
viene valutato come False
, quindi questo codice:
q = meta.Session.query(cls)
q = q.filter(cls.id in [2,3,5,7,11])
return q.all()
fallisce con un'eccezione:
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