Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Python MySQLdb-Fehler – was verursacht das?

Ihr Code zum Erstellen der Abfrage versucht nicht, die Zeichenfolgenwerte in Anführungszeichen zu setzen:

cmd = "INSERT INTO resulttest (category, value, timestamp) VALUES (" + key + ", " + str(value) + ", " + str(timestamp) + ")"

Sehen Sie sich die ausgegebene SQL-Anweisung an:

INSERT INTO resulttest (category, value, timestamp) VALUES (composed, 2, 1343186948.8)

Sollte "Kategorie" nicht in Anführungszeichen stehen?

Sie sollten überhaupt keine SQL-Anweisung mit Zeichenfolgenoperationen erstellen. So entstehen SQL-Injection-Schwachstellen. Stattdessen sollten Sie Platzhalter verwenden und die MySQL-Bibliothek damit umgehen lassen:

c.execute(
    "INSERT INTO resulttest (category, value, timestamp) VALUES (?, ?, ?)", 
    (key, value, timestamp)
)