Python/psycopg2 WHERE IN statement

What is the correct method to have the list (countryList) be available via %s in the SQL statement?

    # using psycopg2
    countryList=['UK','France']

    sql='SELECT * from countries WHERE country IN (%s)'
    data=[countryList]
    cur.execute(sql,data)

As it is now, it errors out after trying to run "WHERE country in (ARRAY[...])". Is there a way to do this other than through string manipulation?

Thanks

For the IN operator, you want a tuple instead of list, and remove parentheses from the SQL string.

    # using psycopg2
    data=('UK','France')

    sql='SELECT * from countries WHERE country IN %s'
    cur.execute(sql,(data,))

During debugging you can check that the SQL is built correctly with

    cur.mogrify(sql, (data,))

From: stackoverflow.com/q/28117576