Python psycopg2 PostgreSQL 尝试解除分配

Python psycopg2 PostgreSQL attemp to deallocate

我想知道是否可以在尝试打开 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")

这是有效的,但是如果在单独的函数中我仍然需要另一个准备好的语句,那么它也会被关闭。但是,如果我使用 deallocate cur_users 那么程序将崩溃并出现错误,即它无法解除分配不存在的准备好的语句。

有办法解决这个问题吗?尝试解除分配,如果失败则准备语句

在 except 块中捕获错误,或者先使用 pg_prepared_statements 查看它是否存在: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))