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