如何判断在使用ruby的postgres中查询是否失败?

0h4hbjxa  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(79)

下面是上下文一些基本代码

require 'pg'

conn = PG.connect(db_params)
# example query:
response = conn.exec("update employees set id = 0 where role = 'owner'")

puts response

每当我试图打印一个不是select语句的语句的响应时,我都会得到在执行查询时创建的Result对象的地址,正如前面的代码所示。
有没有办法知道查询是否失败?
我去了'pg' gem文档,它只提到了执行select语句,这对我的情况没有帮助。

zazmityj

zazmityj1#

PG::Connection#exec的文档说:
将SQL指定的SQL查询请求发送到PostgreSQL。成功后,它返回一个PG::Result示例,其中包含所有结果行和列。失败时,将引发PG::Error。
因此,如果查询失败,它将引发PG::Error类型的异常。你可以使用一个begin ... rescue块来捕获它:

begin
  conn.exec("update employees set id = 'invalid' where role = 'owner'")
rescue PG::Error => e
  puts "#{e.class}: #{e.message}"
end

相关问题