I'm just posting this to the group for search equity--

Until recently (2012, via this commit 
https://bitbucket.org/zzzeek/sqlalchemy/issue/2544), the way recommended 
several times in this group and stackoverflow to generate "IS NOT NULL" was 
to use a column opreation:

    sq = sess.query(A.id.label('id')).filter(A.id.op('IS NOT')(None))

However, that will cause a sqlalchemy.exc.CompileError when print/compiling 
a statement with "literal binds"

    # this will raise an error
    print str(sq.statement.compile(dialect=postgresql.dialect(), 
compile_kwargs={"literal_binds": True}))

To get around that issue, these forms will all compile correctly:

  # 0.7.9 and later
  sq = sess.query(A.id.label('id')).filter(A.id != None)

  # 0.7.8 and earlier
  sq = sess.query(A.id.label('id')).filter(A.id.op('IS 
NOT')(sqlalchemy.sql.expression.null()))

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to