Faheem Mitha wrote:
> On Wed, 21 Jan 2009 08:26:13 -0800, jason kirtland
> <j...@discorporate.us> wrote:
> 
>> Faheem Mitha wrote:
>>> Hi,
>>>
>>> I've got a query as follows:
>>>
>>> from sqlalchemy.sql import text
>>>
>>> gq = text("""
>>> SELECT decode_genotype(cell.snpval_id, snp.allelea_id, 
>>> snp.alleleb_id) FROM cell JOIN snp ON snp.fid = 
>>> cell.snp_id WHERE cell.patient_chipid IN ('DUKE00001_plateA_A10.CEL', 
>>> 'DUKE00001_plateA_A11.CEL')
>>>     """)
>>> I want to pass in the tuple as an argument, and was wondering how to do 
>>> it.
>>>
>>> So, I'm looking for something conceptually like
>>>
>>> gq = text("""
>>> SELECT decode_genotype(cell.snpval_id, snp.allelea_id, 
>>> snp.alleleb_id) FROM cell JOIN snp ON snp.fid = 
>>> cell.snp_id WHERE cell.patient_chipid IN :plist
>>>     """)
>  
>>> gq = conn.execute(gq, plist="('DUKE00001_plateA_A10.CEL',
>    'DUKE00001_plateA_A11.CEL')")
>  
>>> Note, I want to pass in a tuple of arbitary length, so changing
>>> this to pass two string arguments would not do. Perhaps I'm
>>> supposed to pass in some bindparams too, but I don't know what type
>>> I should be using.
> 
>> IN takes a list of scalars, each of which requires its own :bind
>> parameter.  On Postgresql you might find it more convenient to use
>> ANY, which takes a single array argument.  "WHERE
>> cell.patient_chipid ANY (:plist)"
> 
> Thanks for the suggestion. Can such an array argument be passed in
> from Python?

Give it a try and let us know how it goes.

Cheers,
Jason


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to