Fehlerbehebung bei der Python-MYSQL-UPDATE-Anweisung mit Variablen
Beim Erstellen einer MYSQL-UPDATE-Anweisung mit Variablen in Python ist es wichtig, deren Richtigkeit sicherzustellen. Ein häufiger Fehler ist wie folgt:
cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)
Wo haben Sie einen Fehler gemacht?
Das Problem liegt in der Art und Weise, wie Variablen in die Anweisung eingefügt werden. Anstatt die richtige Methode zu verwenden, verkettet dieses Snippet einfach Zeichenfolgen mit Variablen, was von MYSQL nicht unterstützt wird.
Der richtige Ansatz
Um den Fehler zu beheben, benötigen Sie um parametrisierte Abfragen zu verwenden, bei denen Variablen durch Platzhalter dargestellt und als separates Argument übergeben werden. Hier ist der richtige Ansatz:
cursor.execute (""" UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server=%s """, (Year, Month, Day, Hour, Minute, ServerID))
Alternative Methode
Alternativ können Sie eine einfache Zeichenfolgenmanipulation verwenden, von der jedoch aufgrund von SQL-Injection-Schwachstellen abgeraten wird:
cursor.execute ("UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server='%s' " % (Year, Month, Day, Hour, Minute, ServerID))
Zusätzlich Hinweis
Beachten Sie, dass verschiedene Datenbank-Backends möglicherweise unterschiedliche Konventionen für das Ersetzen von Zeichenfolgen haben. SQLite verwendet beispielsweise einfache Anführungszeichen für Zeichenfolgenwerte in Aktualisierungsabfragen.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine Python-MYSQL-UPDATE-Anweisung mit Variablen fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!