从executemany语句中获取“返回”值

用户名

将Postgresql 9.5与psycopg2一起使用。

使用“返回”,我可以检索插入的单行的“ id”。

sql = "insert into %s (%s) values (%s) returning id" % (table_name, columns, values_template)        
values = tuple(row_dict[key] for key in keys)
cur.execute(sql, values)
id_new_row = cur.fetchone()[0]

我希望也可以检索使用该executemany语句插入的许多行中最后一行的ID

cur.executemany(insert_sql , data_dict)
#get id of the last row inserted
id_new_row = cur.fetchone()[0]

但这会引发DatabaseError,“没有要提取的结果”。

这是根本上不可能做的事情,还是我没有正确要求结果?

彼得·布里顿

我认为您要执行的操作是不可能的。

首先,就PEP 249而言,您已经处于躲闪状态。具体来说,这是关于执行力的。

对于产生一个或多个结果集的操作使用此方法构成未定义的行为,当实现检测到通过调用该操作创建了结果集时,允许(但不是必需)该实现引发异常。

如果查看psycopg2源代码,可以看到executemany设置了该no_result标志。当您向下查找处理查询代码时,您会看到它丢弃了所有结果(发布时的第1582-1595行)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从executemany语句中获取“返回”值

来自分类Dev

在case语句中返回布尔值

来自分类Dev

PHP在条件语句中返回cookie的值

来自分类Dev

我如何在用python编写的while语句中获取返回值?

来自分类Dev

从SQL语句中获取多个值

来自分类Dev

在if语句中获取数据库值

来自分类Dev

在MySQL语句中返回\'

来自分类Dev

在else语句中返回

来自分类Dev

CASE语句中随机生成的值返回NULL

来自分类Dev

If-else语句中的返回值-C ++

来自分类Dev

SQL计数在我的INNER JOIN语句中返回错误的值

来自分类Dev

如何设置列以在select语句中返回值

来自分类Dev

如何在C ++的if语句中检查lambda的返回值?

来自分类Dev

If-else语句中的返回值-C ++

来自分类Dev

仅返回SQLite Select语句中的Last值

来自分类Dev

IF语句中函数的返回值显示异常行为

来自分类Dev

SQL Server存储过程在选择语句中返回值

来自分类Dev

选择子句中返回值大于1的语句

来自分类Dev

Java返回值在if语句中不起作用

来自分类Dev

使用lambda在if else语句中返回布尔值

来自分类Dev

C#使用IF / ELSE语句中的方法返回的值

来自分类Dev

在 DEF() 语句中使用 if 在 python 中返回错误值

来自分类Dev

嵌套在循环中的 if 语句中的 OCaml 返回值

来自分类Dev

如何在if语句中调用函数并保存返回值

来自分类Dev

在select count(*)语句中获取关联列值

来自分类Dev

在准备好的语句中获取列名而不是值

来自分类Dev

从 Angular 范围获取 ID 值并在语句中使用

来自分类Dev

如何在 SQL Server SELECT 语句中获取以前的值

来自分类Dev

psycopg2在executemany语句中内插表名