我想知道在试图打开一个PostgreSQL准备好的语句之前是否可以尝试释放它
目前,我使用以下代码来释放所有准备好的语句

cur_deallocate = gv_pgsql.cursor()
cur_deallocate.execute("deallocate all")

cur_users = gv_pgsql.cursor()
cur_users.execute("prepare cur_users as " +
                  "select * from users")

但是,如果在单独的函数中还有另一个准备好的语句,那么它也将被关闭。但是,如果我使用DeCuff-CurrUsAs,程序就会崩溃,因为它不能释放一个不存在的准备好的语句。
有办法解决这个问题吗?要尝试解除分配,如果失败,请准备语句

最佳答案

捕获一个异常块中的错误,或者首先使用PGYPravaReDX语句查看是否存在:enter link description here
在我们的安装语句中,名称以小写形式存储

def safe_deallocate(self, statement_name):
    curs.execute(
        "select true from pg_prepared_statements where name = lower(%s)", (statement_name,))
    if curs.rowcount:
        curs.execute("deallocate {}".format(statement_name))

07-24 15:38