[sqlalchemy] statement.compile and legacy is not null code

2014-10-01 Thread Jonathan Vanasco
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

2014-10-01 Thread Claudio Freire
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

2014-10-01 Thread Michael Bayer

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.