sql >> Base de Datos >  >> RDS >> Mysql

Python desafiando la codificación de cadenas

No debe usar .format() para incluir valores en una consulta sql. Use parámetros sql en su lugar:

sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))

cursor.execute(sql, providers)

donde providers es la lista original.

La idea es generar una consulta SQL con in pruebe usando la sintaxis de parámetros SQL que coincida con el número de proveedores en su lista:WHERE provider in (%s, %s) ... para una lista de dos proveedores. Sí, la sintaxis del parámetro sql de MySQLdb se hace eco de la sintaxis de formato de Python al estilo antiguo, pero no es lo mismo.