Ich mache ein Python-Programm, das Elo-Berechnungen für eine Azure SQL-Datenbank durchführt. Das Problem ist mit den letzten zwei 'cursor.execute' Befehlen (den UPDATEs).pyodbc UPDATE löst eine Ausnahme aus
Ich habe einen Teil des Codes vor dem Posten hier herausgenommen, um es kleiner zu machen, aber alle Variablen werden richtig von den Methoden find_winner und find_loser übergeben - die Druckbefehle zeigen den richtigen Wert.
Wenn ich das Programm wie es ist ausführen, druckt es die Änderung der Bewertungen und der Nachricht aus dem Block außer. Wenn ich die UPDATE-Methoden auskommentiere, wird die Nachricht except nicht gedruckt. Der einzige Grund, warum ich dazu komme, ist, dass die Variablen aus dem Tupel von find_winner und find_loser nicht richtig in die SQL-Anweisung eingetragen werden.
Ich habe versucht, es mit zu laufen? und '% s' anstelle von winner_new_rating und winner_id, aber keine der 3 Versionen funktionierte.
Gibt es etwas Offensichtliches, das ich vermisse? Wie können Parameter, die in Variablen gespeichert sind, korrekt eingegeben werden?
def rate():
try:
(winner_rating,winner_name,winner_id) = find_winner()
(loser_rating,loser_name,loser_id) = find_loser()
cursor = conn.cursor()
print(winner_name, "wins", winner_rating, "-->", winner_new_rating)
print(loser_name, "loses:", loser_rating, "-->", loser_new_rating)
cursor.execute("UPDATE KIDS SET Rating = winner_new_rating WHERE LocalID = winner_id")
cursor.execute("UPDATE KIDS SET Rating = loser_new_rating WHERE LocalID = loser_id")
conn.commit()
except:
print("Rate method error")
Was ist die Ausnahmemeldung? –
Hoppla, keine Ausnahme. Es druckt nur die Nachricht aus dem Ausnahmeblock. – user3364161
So fangen Sie die Ausnahme und drucken Sie die Nachricht. –