Après plus de recherches, j'ai découvert la propriété isolation_level de l'objet de connexion psycopg2. Il s'avère que changer ceci en 0
vous fera sortir d'un bloc de transaction. Changer la méthode de vide de la classe ci-dessus en la suivante le résout. Notez que j'ai également remis le niveau d'isolement à ce qu'il était auparavant juste au cas où (semble être 1
par défaut).
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)
Cet article (vers la fin de cette page) fournit une brève explication des niveaux d'isolement dans ce contexte.