使用 psycopg2 出现 InternalError 后要怎么处理?


执行完第 6 行以后,再怎么执行都抛出 InternalError .

请问有没有办法执行完第 6 行后还能继续查询?


 1  import psycopg2
2  conn = psycopg2.connect("dbname=test user=test")
3  cur = conn.cursor()
4  cur.execute("select phone from account where phone = %s;", ("13366668888",))
5  cur.fetchone()
6  cur.execute("select phone from account where phone = %s;", (13366668888,))
7  cur.execute("select phone from account where phone = %s;", ("13366668888",))

输出如下(省略了 Traceback ):


 Out[5]: ('13366668888',)

Out[6]: ProgrammingError: operator does not exist: character varying = bigint
LINE 1: select phone from account where phone = 13366668888;
                                              ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

Out[7]: InternalError: current transaction is aborted, commands ignored until end of transaction block

异常 PostgreSQL python 数据库 sql

我真的很纯洁 10 years, 4 months ago

current transaction is aborted, commands ignored until end of transaction block

中文就是

当前事务被中止,直到事务结束前的命令都将被忽略

所以你想继续的话,开启新事务就可以了,比如 conn.commit() 一下。

Agous answered 10 years, 4 months ago

Your Answer