Ejemplo sacado de la
santa documentación de python:
Cita:
Iniciado por pydoc Usually your SQL operations will need to use values from Python variables. You shouldn’t assemble your query using Python’s string operations because doing so is insecure; it makes your program vulnerable to an SQL injection attack.
Instead, use the DB-API’s parameter substitution. Put ? as a placeholder wherever you want to use a value, and then provide a tuple of values as the second argument to the cursor’s execute() method. (Other database modules may use a different placeholder, such as %s or :1.) For example:
Cita:
Iniciado por Traducción Usualmente tus operaciones SQL necesitaran usar valores de las variables de Python. No debes de ensamblar (construir) tu query usando las cadenas de Python (strings) por que es inseguro; Hace tu programa vulnerable a ataques tipo SQL injection.
En vez de eso, usa la API de la base de datos para sustituir parametros. Pon un ? donde donde quieras usar el valor de la variable y despues enviar una tupla de valores como segundo argumento en el metodo execute() de la variable cursor. (Esto puede variar según la base de datos).
Ejemplo (para sqlite3):
Código Python:
Ver original# Nunca hagas esto, es inseguro
symbol = 'IBM'
c.execute("... where symbol = '%s'" % symbol)
# En vez de eso, haz esto
t = (symbol,)
c.execute('select * from stocks where symbol=?', t)
# Ejemplo largo
for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),
('2006-04-06', 'SELL', 'IBM', 500, 53.00),
]:
c.execute('insert into stocks values (?,?,?,?,?)', t)
Te recomiendo que cheques la API de la base de datos que estés manejando.
Perdón por la rapida traducción pero tenia prisa :P