我正在将 Python 与 psycopg2 一起使用,并且我试图在VACUUM
插入数千行的日常操作之后运行完整。问题是当我尝试VACUUM
在我的代码中运行命令时,我收到以下错误:
psycopg2.InternalError: VACUUM cannot run inside a transaction block
如何从事务块外部的代码运行它?
如果它有所作为,我有一个简单的 DB 抽象类,它的一个子集显示在下面的上下文中(不可运行,异常处理和文档字符串被省略,并且行跨越调整):
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)