Twój kod do utworzenia zapytania nie próbuje cytować wartości ciągu:
cmd = "INSERT INTO resulttest (category, value, timestamp) VALUES (" + key + ", " + str(value) + ", " + str(timestamp) + ")"
Spójrz na wydrukowaną instrukcję SQL:
INSERT INTO resulttest (category, value, timestamp) VALUES (composed, 2, 1343186948.8)
Czy nie powinno być cytowane „kategoria”?
Przede wszystkim nie powinieneś tworzyć instrukcji SQL z operacjami na ciągach. W ten sposób powstają luki typu SQL injection. Zamiast tego powinieneś użyć symboli zastępczych i pozwolić, aby biblioteka MySQL poradziła sobie z nimi:
c.execute(
"INSERT INTO resulttest (category, value, timestamp) VALUES (?, ?, ?)",
(key, value, timestamp)
)