Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro Python MySQLdb - o que está causando isso


Seu código para criar a consulta não está tentando citar os valores de string:
cmd = "INSERT INTO resulttest (category, value, timestamp) VALUES (" + key + ", " + str(value) + ", " + str(timestamp) + ")"

Veja a instrução SQL que você imprimiu:
INSERT INTO resulttest (category, value, timestamp) VALUES (composed, 2, 1343186948.8)

A "categoria" não deveria ser citada?

Você não deveria estar compondo uma instrução SQL com operações de string em primeiro lugar. É assim que as vulnerabilidades de injeção de SQL acontecem. Em vez disso, você deve usar placeholders e deixar a biblioteca MySQL lidar com eles:
c.execute(
    "INSERT INTO resulttest (category, value, timestamp) VALUES (?, ?, ?)", 
    (key, value, timestamp)
)