我想知道在试图打开一个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))