检测是否从psycopg2光标获取?

moe*_*eth 9 python psycopg2

假设我执行以下命令.

insert into hello (username) values ('me')
Run Code Online (Sandbox Code Playgroud)

我跑得像

cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

psycopg2.ProgrammingError: no results to fetch
Run Code Online (Sandbox Code Playgroud)

如何在不检查查询是"插入"还是"选择"的情况下检测是否调用fetchall()?

谢谢.

Chr*_*s B 17

看看这个属性:

cur.description
Run Code Online (Sandbox Code Playgroud)

执行查询后,如果没有返回任何行,它将被设置为None,否则将包含数据 - 例如:

(Column(name='id', type_code=20, display_size=None, internal_size=8, precision=None, scale=None, null_ok=None),)
Run Code Online (Sandbox Code Playgroud)

捕获异常并不理想,因为可能存在一个覆盖真正异常的情况.

  • 为我工作了一段时间,但现在我面临着查询没有返回行,但描述属性不是 None 的情况。诡异的。 (2认同)