PostgreSQL - como executar o comando VACUUM do código fora do bloco de transação?
Eu estou usando Python com psycopg2 e estou tentando executar um completoVACUUM
após uma operação diária que insere vários milhares de linhas. O problema é que quando eu tento executar oVACUUM
comando dentro do meu código eu recebo o seguinte erro:
<code>psycopg2.InternalError: VACUUM cannot run inside a transaction block </code>
Como executo isso a partir do código fora de um bloco de transação?
Se isso fizer diferença, eu tenho uma classe de abstração de banco de dados simples, um subconjunto do qual é exibido abaixo para contexto (não executável, manipulação de exceção e docstrings omitidos e ajustes de extensão de linha feitos):
<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>