插入 returns "the last operation didn't produce a result"

Insert returns "the last operation didn't produce a result"

对于以下代码:

with psycopg.connect(host="host_name", dbname="db_name", user="user", password="pass") as conn:
  with conn.cursor() as cur:
    cur.execute("SELECT * FROM table_name")
    res = cur.fetchall()
    print(res)

一切正常,但如果我尝试通过替换来插入值

cur.execute("SELECT * FROM table_name")

cur.execute("INSERT INTO table_name (column_1, column_2) VALUES (%s, %s)", ("a","b"))

我收到以下错误“上次操作没有产生结果”是什么原因造成的?

在插入操作的情况下 res = cur.fetchall() 是多余的。错误代码在这里不言自明。

try:
    cur.execute("INSERT INTO table_name (column_1, column_2) VALUES (%s, %s)", ("a","b"))
except:
    print('error')

两种处理方式:

import psycopg2
con = psycopg2.connect(database="test", host='localhost', user='postgres')
cur = con.cursor()
cur.execute("insert into animals values(24, 'fair', 'cat')")
cur.rowcount
1

cur.execute("insert into animals values(34, 'good', 'dog') returning id")
cur.fetchone()
(34,)

第一种方式returns每次操作影响的行数Cursor.

第二种方式returns id 字段所以实际上有一个结果。