Ich habe ein SQLAlchemy Session
-Objekt und möchte wissen, ob es schmutzig ist oder nicht. Die genaue Frage, die ich (metaphorisch) an die Session
stellen möchte, lautet: "Wenn ich an dieser Stelle ein commit()
oder ein rollback()
ausstelle, ist der Effekt auf die Datenbank gleich oder nicht?".
Die Begründung ist folgende: Ich möchte den Benutzer fragen, ob er die Änderungen bestätigen möchte oder nicht. Aber wenn es keine Änderungen gibt, möchte ich nichts fragen. Natürlich kann ich selbst alle Operationen überwachen, die ich an der Session
durchführe, und entscheiden, ob es Änderungen gibt oder nicht, aber wegen der Struktur meines Programms würde dies einige ziemlich einschneidende Änderungen erfordern. Wenn SQLAlchemy diese Möglichkeit bereits anbietet, würde ich es gerne nutzen.
Danke allen.
Sie suchen nach einer Nettozahl von tatsächlichen Flushes, die während der gesamten Zeitspanne der Sitzung stattgefunden haben; Während es einige Hinweise darauf gibt, ob dies geschehen ist oder nicht (der "Schnappschuss" genannt wird), dient diese Struktur nur dazu, bei Rollbacks zu helfen, und ist nicht stark referenzierend. Der direkteste Weg dahin wäre das Nachverfolgen von "after_flush" -Ereignissen, da dieses Ereignis nur emittiert wird, wenn flush aufgerufen wurde und auch der flush-Zustand flush gefunden wurde:
%Vor% Sitzungen haben ein privates _is_clean()
-Member, das scheinbar "true" zurückgibt, wenn die Datenbank nicht gelöscht werden kann. Die Tatsache, dass es privat ist, kann jedoch bedeuten, dass es nicht für den externen Gebrauch geeignet ist. Ich würde nicht aufhören, dies persönlich zu empfehlen, da jeder Fehler hier offensichtlich zu Datenverlust für Ihre Benutzer führen könnte.
Tags und Links python sqlalchemy