[sqlalchemy] binding values for the in() statement

2010-04-08 Thread Tarek Ziadé
Hello,

I am trying to bind a list for an in() operator in a pure SQL query :

 import sqlalchemy
 engine = create_engine('mysql://localhost/database')
 connection = engine.connect()
 connection.execute(engine.text(select * from user where email in 
 (:emails)), emails=['ta...@ziade.org'])

This will fail because the dialect will not bind a list for the
:emails params.

Is there a way to do this ? I looked at the expression compiler but
didn't find anything relevant.

Or do I have to build the query manually with a ','.join() in this case ?

Regards,
Tarek

-- 
Tarek Ziadé | http://ziade.org

-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalch...@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.



Re: [sqlalchemy] binding values for the in() statement

2010-04-08 Thread Michael Bayer
Tarek Ziadé wrote:
 Hello,

 I am trying to bind a list for an in() operator in a pure SQL query :

 import sqlalchemy
 engine = create_engine('mysql://localhost/database')
 connection = engine.connect()
 connection.execute(engine.text(select * from user where email in
 (:emails)), emails=['ta...@ziade.org'])

 This will fail because the dialect will not bind a list for the
 :emails params.

 Is there a way to do this ? I looked at the expression compiler but
 didn't find anything relevant.

 Or do I have to build the query manually with a ','.join() in this case ?

you do.  bind parameters don't expand into arrays with relational
databases.

Options to get around this include, putting a subquery into your in(), or
of course SQLA's in_() operator generates the bind parameters for you.




 Regards,
 Tarek

 --
 Tarek Ziadé | http://ziade.org

 --
 You received this message because you are subscribed to the Google Groups
 sqlalchemy group.
 To post to this group, send email to sqlalch...@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.



-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalch...@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.