首页 > 解决方案 > 显式检查 SQL INSERT 操作是否成功是不必要的?

问题描述

我正在使用 Python 与使用 psycopg2 的 Postgres DBMS 交谈。

假设如果 INSERT 返回而不引发异常,那么 INSERT 实际上确实在数据库中存储了一些新的东西,是否安全?

现在,我一直在检查数据库游标的 'rowcount' 属性,如果它是 0 则意味着 INSERT 失败。但是,我开始认为这没有必要。

标签: pythonpostgresqlpsycopg2

解决方案


默认情况下postgres将返回None成功插入:

cursor.execute- 方法返回None。如果执行了查询,则可以使用 fetch*() 方法检索返回的值。

http://initd.org/psycopg/docs/cursor.html

如果您想了解有关插入的信息,可以使用一个简单/有效的选项RETURNING(它采用与 a 相同的选项SELECT):

INSERT INTO ... RETURNING id

推荐阅读