Если вы хотите «обмануть», используя недокументированный атрибут _whereclause
для Select
объектов, вы можете постепенно указывать серию условий ИЛИ, каждый раз создавая новый запрос на основе предыдущего пункт:
s = select([files]).where(literal(False)) # Start with an empty query.
s = select(s.froms).where(or_(s._whereclause,
files.c.createtime.between(val1, val2)))
s = select(s.froms).where(or_(s._whereclause,
files.c.createtime == datetime(2009, 2, 1)))
Создание союза является еще одним вариантом. Это немного сложнее, но не зависит от недокументированных атрибутов:
s = select([files]).where(literal(False)) # Start with an empty query.
s = s.select().union(
select([files]).where(files.c.createtime.between(val1, val2)))
s = s.select().union(
select([files]).where(files.c.createtime == datetime(2009, 2, 1)))