[sqlalchemy] statement.compile and legacy is not null code
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.
Re: [sqlalchemy] statement.compile and legacy is not null code
On Wed, Oct 1, 2014 at 6:51 PM, Jonathan Vanasco jvana...@gmail.com wrote: # 0.7.9 and later sq = sess.query(A.id.label('id')).filter(A.id != None) I've used ~(id == None) since 0.3 quite successfully (though I've eventually switched to != None since it's way more natural so not sure if there's any place where it doesn't compile well) -- 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.
Re: [sqlalchemy] statement.compile and legacy is not null code
you have either x != None or x != null() or x.isnot(None), or x.isnot(null())) a lot of choices! On Oct 1, 2014, at 5:51 PM, Jonathan Vanasco jvana...@gmail.com wrote: 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. -- 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.