session.query(User.name).filter(User.name.like('%ed%'))
))
+ # use tuple_() for composite (multi-column) queries
+ from sqlalchemy import tuple_
+ query.filter(
+ tuple_(User.name, User.nickname).\
+ in_([('ed', 'edsnickname'), ('wendy', 'windy')])
+ )
+
* :meth:`NOT IN <.ColumnOperators.notin_>`::
query.filter(~User.name.in_(['ed', 'wendy', 'jack']))
def __init__(self, *clauses, **kw):
"""Return a :class:`.Tuple`.
- Main usage is to produce a composite IN construct::
+ Main usage is to produce a composite IN construct using
+ :meth:`.ColumnOperators.in_` ::
from sqlalchemy import tuple_
WHERE COL IN (?, ?, ?)
+ * A list of tuples may be provided if the comparison is against a
+ :func:`.tuple_` containing multiple expressions::
+
+ from sqlalchemy import tuple_
+ stmt.where(tuple_(col1, col2).in_([(1, 10), (2, 20), (3, 30)]))
+
* An empty list, e.g.::
stmt.where(column.in_([]))