Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur Python MySQLdb - quelle en est la cause

Votre code pour créer la requête n'essaie pas de citer les valeurs de chaîne :

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

Regardez l'instruction SQL que vous avez imprimée :

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

La "catégorie" ne devrait-elle pas être citée ?

Vous ne devriez pas composer une instruction SQL avec des opérations de chaîne en premier lieu. C'est ainsi que se produisent les vulnérabilités d'injection SQL. À la place, vous devriez utiliser des espaces réservés et laisser la bibliothèque MySQL s'en occuper :

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