Ich habe diesen Code:
%Vor% Spaß wie es ist, cursor.rowcount
ist immer eins, obwohl ich meine Datenbank aktualisiert habe, um die videos_id zu einem eindeutigen Schlüssel zu machen. Das heißt, die Einfügung schlägt fehl, weil in meinen Tests das gleiche videos_id
erscheinen wird (und wenn ich die Datenbank überprüfe, wurde nichts eingefügt).
Aber aus irgendeinem Grund ist die rowcount
immer 1 - sogar die logging.warn
Ich spucke eine rowcount
von 1 aus.
Also, die Frage:
Kann ich rowcount
verwenden, um herauszufinden, ob ein Einsatz erfolgreich war? Wenn ja, was mache ich (vermutlich) falsch?
Wie überprüfe ich sonst, ob eine Einfügung in Ordnung war?
Ihr Code wird nach den Änderungen nicht übernommen (Ihre Änderungen werden rückgängig gemacht). Das heißt, Sie sollten die folgende Zeile nach cursor.execute
hinzufügen:
Fehlgeschlagene Einfügung wirft MySQLdb.IntegrityError
, also sollten Sie bereit sein, es zu fangen.
Daher sollte Ihr Code etwa wie folgt aussehen:
%Vor%Ich habe nicht genug Reputation, um einen Kommentar abzugeben, aber hier ist eine wichtige Anmerkung:
Es ist auch möglich, dass execute () automatisch fehlschlägt, wenn Sie nach dem Aufruf nicht committen. Namentlich erfordern MyISAM-Tabellen keine Festschreibung, aber InnoDB-Tabellen.
Wenn die Einfügung fehlschlägt, erhalten Sie eine erhöhte Ausnahme oder jemand wird schreien oder Sie werden von Ihrem Stuhl fallen.
Tags und Links python mysql-python