The query is semantically the same because AND
has precedence over OR
, therefore
WHERE Cond1 AND Cond2 OR Cond3 AND Cond4
will produce the same result as
WHERE (Cond1 AND Cond2) OR (Cond3 AND Cond4)
.
Were you to try the other way around (switch or_
and and_
in your code), you would notice that sqlalchemy
does generate parenthesis.