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)
)