相关疑难解决方法(0)

PostgreSQL - 如何从事务块外的代码运行VACUUM?

我正在使用带有psycopg2的Python,并且我试图VACUUM在每日操作后运行一个完整的插入数千行.问题是,当我尝试VACUUM在我的代码中运行命令时,我收到以下错误:

psycopg2.InternalError: VACUUM cannot run inside a transaction block
Run Code Online (Sandbox Code Playgroud)

如何从事务块外部的代码运行它?

如果它有所不同,我有一个简单的DB抽象类,下面显示了一个子集用于上下文(不是runnable,省略了异常处理和docstrings以及进行了行跨越调整):

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)
Run Code Online (Sandbox Code Playgroud)

python sql postgresql psycopg2 vacuum

33
推荐指数
4
解决办法
2万
查看次数

标签 统计

postgresql ×1

psycopg2 ×1

python ×1

sql ×1

vacuum ×1