ZODB: aktuelle Connection ermitteln und synchronisieren
In manchen Fällen, hat man langlaufende Prozesse, die Änderungen der ZODB mitbekommen sollen. Dies geschieht normaler Weise beim Begin einer Transaction.
Wenn wir einen aktuelleren Stand der Datenbank sehen möchten, können wir wie folgt die aktuelle Transaktion abbrechen.
import transaction
transaction.abort()
Leider bekommt man hier erst die aktuellen Daten, wenn eine andere Transaktion commited wurde.
Wie aber können wir sicher stellen, dass wir den tatsächlich aktuellen Datenbestand sehen?
Die Lösung heißt Connection.sync()
Die aktuelle Connection bekommen wir, in dem wir sie uns von einem Objekt wie folgt holen.
connection = object._p_jar
Die Connection bietet uns eine Methode sync an, wenn wir diese aufrufen, haben wir danach den tatsächlich aktuellen Datenbestand zur Verfügung.
connection.sync()