[pyar] Escapar parametros en consultas, MySQLdb
Ricardo Aráoz
ricaraoz en gmail.com
Mie Feb 9 09:44:28 ART 2011
On 08/02/2011 07:53 p.m., marrese en gmail.com wrote:
> SI no me equivoco hacer el join de la lista de valores de esa forma
> deja abierta la posibilidad a un injection. Si alguno de los valores
> tiene una ' entre medio no es escapada.
>
> Si usas MySQL o SQLite3 (los unicos que probe con python) podes dejar
> que el mismo modulo se encargue de escapar los valores
>
> Quizas lo que haria seria algo del estilo
>
> primaryUsers = ["user1","user2","user3","user4","user5"]
> in_cond = [ '%s' for a in range(len(primaryUsers)) ]
>
> sql = 'DELETE FROM users WHERE user NOT IN (%s)' % (','.join(in_cond),)
> cur.execute(sql, primaryUsers)
+1
Podrías ahorrarte un ciclo o dos haciendo directamente (los llamados a
range() y a len() y la generación de una lista son innecesarios) :
in_cond = ', '.join('%s' for a in primaryUsers)
More information about the pyar
mailing list