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