sparrow hat geschrieben:Warum machst du nach einem SELECT ein Commit? Das macht keinen Sinn. Ein Commit beendet eine Transaktion positiv, schreibt also Änderungen in DBMS fest. Da du nur ein SELECT ausführst, muss da also nichts festgeschrieben werden.
Du möchtest dich über Datenbanktransaktionen informieren.
Der OP hat sich nicht zum verwendeten Datenbanksystem geäußert. Und bei Firebird steckt auch ein SELECT in einer Transaktion, die abgeschlossen werden soll / muss. Ich habe es zu lange nicht verwendet, um noch genau zu wissen, was andernfalls passiert. Klar ist, dass natürlich auch für mehrere SELECT-Befehle hintereinander ein COMMIT am Ende genügt und dass es hier keinen (oder keinen offensichtlichen) Unterschied zwischen COMMIT und ROLLBACK gibt. Allerdings ist das wohl wirklich eine Ausnahme.
Wenn es "fetchall" gibt, dann gibt es möglicherweise auch "fetchone". Das macht aber nur Sinn, wenn wirklich nur eine Zeile als Ergebnis zu erwarten ist.
Wenn das benutzte Datenbankmodul die DB API 2.0 befolgt, was die meisten ja tun, dann muss es fetchone geben. Das gibt dann einfach den einzigen / ersten / nächsten Satz des Ergebnisses zurück, ersatzweise None.