The following use of the API with MySQL works fine

> items = [1, 2]
> execute('SELECT * from table1 WHERE field1 IN %s', (items,))
resultant query string: SELECT * from table1 WHERE field1 IN ('1', '2')

By contrast, the following yields the message "error in your SQL syntax"

> items = [1]
> execute('SELECT * from table1 WHERE field1 IN %s', (items,))
resulting query string: SELECT * from table1 WHERE field1 IN ('1',)

Thus it seems the only way to manage this situation is to use this
stilted construction:

> if len(items)==1:
>     execute('SELECT * from table1 WHERE field1 IN (%s)', items[0])
> else:
>     execute('SELECT * from table1 WHERE field1 IN %s', (items,))

Is this just a shortcoming in how the API handles formatting of lists
or is there a cleaner way to handle this?
_______________________________________________
DB-SIG maillist  -  DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to