i need to do this query:
SELECT *
FROM tbl_member
WHERE (member_type==1 AND member_status==1)
OR (member_type==2 and member_status==2)
i've tried:
q=session.query(tbl_member) \
.filter(or_(and_(tbl_member.member_type==1,tbl_member.member_status==1), \
and_(tbl_member.member_type==2,tbl_member.member_status==2)))
and
q=session.query(tbl_member) \
.filter(or_((and_(tbl_member.member_type==1,tbl_member.member_status==1)), \
(and_(tbl_member.member_type==2,tbl_member.member_status==2))))
the query sql still like this:
SELECT *
FROM tbl_member
WHERE member_type==1 AND member_status==1 OR member_type==2 AND member_status==2
how should i do?
The query is semantically the same because AND
has precedence over OR
, thereforeWHERE Cond1 AND Cond2 OR Cond3 AND Cond4
will produce the same result asWHERE (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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With