След повече търсене открих свойството isolation_level на обекта за връзка psycopg2. Оказва се, че промяната на това на 0
ще ви премести от транзакционен блок. Промяната на вакуумния метод от горния клас към следния решава проблема. Обърнете внимание, че също зададох нивото на изолация обратно на предишното за всеки случай (изглежда 1
по подразбиране).
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)
Тази статия (близо до края на тази страница) дава кратко обяснение на нивата на изолация в този контекст.