Po dalším hledání jsem objevil vlastnost isolation_level objektu připojení psycopg2. Ukázalo se, že změna na 0
vás přesune z transakčního bloku. Změna vakuové metody výše uvedené třídy na následující to řeší. Všimněte si, že jsem také nastavil úroveň izolace zpět na to, co bylo dříve pro všechny případy (zdá se, že je 1
ve výchozím nastavení).
def vacuum(self):
old_isolation_level = self.conn.isolation_level
self.conn.set_isolation_level(0)
query = "VACUUM FULL"
self._doQuery(query)
self.conn.set_isolation_level(old_isolation_level)
Tento článek (na této stránce na konci) poskytuje stručné vysvětlení úrovní izolace v tomto kontextu.