try query len examples cursores python psycopg2 where-in

python - len - psycopg2 query examples



DeclaraciĆ³n de Python/psycopg2 WHERE IN (3)

Para el operador IN , desea una tuple lugar de una list y eliminar los paréntesis de la cadena SQL.

# using psycopg2 data=(''UK'',''France'') sql=''SELECT * from countries WHERE country IN %s'' cur.execute(sql,(data,))

Durante la depuración, puede verificar que el SQL esté construido correctamente con

cur.mogrify(sql, (data,))

¿Cuál es el método correcto para que la lista (countryList) esté disponible a través de% s en la instrucción SQL?

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

Tal como está ahora, se produce un error después de intentar ejecutar "WHERE country in (ARRAY [...])". ¿Hay alguna manera de hacer esto que no sea a través de la manipulación de cadenas?

Gracias


Para explicar un poco la respuesta y abordar los parámetros con nombre, y convertir las listas en tuplas:

countryList = [''UK'', ''France''] sql = ''SELECT * from countries WHERE country IN %(countryList)s'' cur.execute(sql, { # You can pass a dict for named parameters rather than a tuple. Makes debugging hella easier. ''countryList'': tuple(countryList), # Converts the list to a tuple. })


Puede usar una lista de Python directamente como se muestra a continuación. Actúa como el operador IN en SQL y también maneja una lista en blanco sin arrojar ningún error.

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

fuente: list