Jonathan Vanasco <jonat...@findmeon.com> writes: > in postgresql i have a boolean field that allows Null values. > > i'd like to query for the items that are not 'true' > > filter( tablename.is_deleted != True ) > > creates this sql: > is_deleted != True > > however this is incorrect and doesn't match the resultset i want. it
To be fair, it is correct in terms of doing what you asked, though if you want it to include NULLs I agree it doesn't do what you want... > needs to read : > is_deleted IS NOT True There are "is" and "isnot" operators in sqlalchemy.sql.operators, but I'm not entirely sure how to trigger from within an expression (and they don't seem to be column operators, but I'm probably missing something simple). However, you should be able to use the generic "op" method, as in: filter(tablename.is_deleted.op("IS NOT")(True)) Alternatively, you could explicitly manage the handling of NULL entries: from sqlalchemy.sql.functions import coalesce filter(coalesce(tablename.is_deleted, False) != True) This way you avoid the treatment of NULLs in the comparison entirely. This method also extrapolates to other cases more readily since it works with non-boolean fields as well. -- David -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.