Sau khi tìm kiếm nhiều hơn, tôi đã phát hiện ra thuộc tính isol_level của đối tượng kết nối psycopg2. Hóa ra là thay đổi điều này thành 0
sẽ chuyển bạn ra khỏi khối giao dịch. Thay đổi phương pháp chân không của lớp trên thành lớp sau sẽ giải quyết được nó. Lưu ý rằng tôi cũng đặt mức cô lập trở lại mức trước đây chỉ để đề phòng (dường như là 1
theo mặc định).
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)
Bài viết này (gần cuối trên trang đó) cung cấp giải thích ngắn gọn về các mức cô lập trong ngữ cảnh này.