PostgreSQL - jak uruchomić VACUUM z kodu poza blokiem transakcji?
Używam Pythona z psycopg2 i próbuję uruchomić pełnyVACUUM
po codziennej operacji, która wstawia kilka tysięcy rzędów. Problem polega na tym, że kiedy próbuję uruchomićVACUUM
Polecenie w moim kodzie Otrzymuję następujący błąd:
<code>psycopg2.InternalError: VACUUM cannot run inside a transaction block </code>
Jak uruchomić to z kodu poza blokiem transakcji?
Jeśli to robi różnicę, mam prostą klasę abstrakcji DB, której podzbiór jest wyświetlany poniżej dla kontekstu (nie można go uruchomić, obsługi wyjątków i pominięto dokumentacji i dokonano korekt obejmujących linię):
<code>class db(object): def __init__(dbname, host, port, user, password): self.conn = psycopg2.connect("dbname=%s host=%s port=%s \ user=%s password=%s" \ % (dbname, host, port, user, password)) self.cursor = self.conn.cursor() def _doQuery(self, query): self.cursor.execute(query) self.conn.commit() def vacuum(self): query = "VACUUM FULL" self._doQuery(query) </code>