tags:

views:

30

answers:

1

I'd like to use string substitution for a comma-separated list, such as:

query = """SELECT id, name, image_id
           FROM users
           WHERE id IN (%s)
           """
values = (','.join(uids))
results = dbc.getAll(query, values

This executes the query:

SELECT id, name, image_id
FROM users
WHERE id IN ('1,2,3')

Which does not work as expected.

How can I do a substution so that I get the query without the quotations, such as:

SELECT id, name, image_id
FROM users
WHERE id IN (1,2,3)
+2  A: 

Let MySQLdb do the entire argument substitution. In this case, the expected argument, values, should be the sequence (1,2,3), rather than the string '1,2,3':

query = """SELECT id, name, image_id
           FROM users
           WHERE id IN %s
           """    
values = uids
results = dbc.getAll(query, [values])
unutbu