クエリを作成するコードは、文字列値を引用しようとしていません:
cmd = "INSERT INTO resulttest (category, value, timestamp) VALUES (" + key + ", " + str(value) + ", " + str(timestamp) + ")"
印刷したSQLステートメントを見てください:
INSERT INTO resulttest (category, value, timestamp) VALUES (composed, 2, 1343186948.8)
「カテゴリ」を引用するべきではありませんか?
そもそも文字列演算を使用してSQLステートメントを作成するべきではありません。これがSQLインジェクションの脆弱性の発生方法です。代わりに、プレースホルダーを使用して、MySQLライブラリにプレースホルダーを処理させる必要があります:
c.execute(
"INSERT INTO resulttest (category, value, timestamp) VALUES (?, ?, ?)",
(key, value, timestamp)
)