अधिक खोज के बाद मैंने 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)
यह लेख (उस पृष्ठ के अंत के पास) इस संदर्भ में अलगाव स्तरों का एक संक्षिप्त विवरण प्रदान करता है।