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

Error de Python MySQLdb:qué está causando esto

Su código para crear la consulta no intenta citar los valores de cadena:

cmd = "INSERT INTO resulttest (category, value, timestamp) VALUES (" + key + ", " + str(value) + ", " + str(timestamp) + ")"

Mire la instrucción SQL que imprimió:

INSERT INTO resulttest (category, value, timestamp) VALUES (composed, 2, 1343186948.8)

¿No debería citarse "categoría"?

En primer lugar, no debería redactar una instrucción SQL con operaciones de cadena. Así es como ocurren las vulnerabilidades de inyección SQL. En su lugar, debe usar marcadores de posición y dejar que la biblioteca MySQL se ocupe de ellos:

c.execute(
    "INSERT INTO resulttest (category, value, timestamp) VALUES (?, ?, ?)", 
    (key, value, timestamp)
)