Mysql
 sql >> Database >  >> RDS >> Mysql

Errore Python MySQLdb:cosa sta causando questo

Il codice per creare la query non sta tentando di citare i valori della stringa:

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

Guarda l'istruzione SQL che hai stampato:

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

La "categoria" non dovrebbe essere citata?

In primo luogo, non dovresti comporre un'istruzione SQL con operazioni di stringa. Ecco come si verificano le vulnerabilità di SQL injection. Invece dovresti usare i segnaposto e lasciare che la libreria MySQL se ne occupi:

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