PostgreSQL - Wie wird VACUUM außerhalb des Transaktionsblocks ausgeführt?
Ich benutze Python mit Psycopg2 und ich versuche, eine vollständige auszuführenVACUUM
nach einem täglichen Betrieb, der mehrere tausend Zeilen einfügt. Das Problem ist das wenn ich versuche das auszuführenVACUUM
Befehl in meinem Code bekomme ich den folgenden Fehler:
<code>psycopg2.InternalError: VACUUM cannot run inside a transaction block </code>
Wie führe ich dies aus dem Code außerhalb eines Transaktionsblocks aus?
Wenn es einen Unterschied macht, habe ich eine einfache DB-Abstraktionsklasse, von der eine Untergruppe für den Kontext angezeigt wird (nicht ausführbar, Ausnahmebehandlung und Dokumentzeichenfolgen weggelassen und Zeilenumbrüche angepasst):
<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>