如何判断Ruby中PostgreSQL的非SELECT查询是否执行失败?
判断pg gem中非SELECT语句的执行是否失败
pg gem执行非SELECT语句(如UPDATE、DELETE、INSERT)时,若执行失败会直接抛出异常,不需要通过Result对象的返回值判断,而是通过异常捕获来处理失败场景。
异常捕获示例代码:
require 'pg' begin conn = PG.connect(db_params) # 执行非SELECT语句 response = conn.exec("update employees set id = 0 where role = 'owner'") # 通过cmd_tuples获取受影响行数,验证执行效果 puts "成功更新 #{response.cmd_tuples} 行数据" rescue PG::Error => e # 捕获执行失败的异常,输出错误详情 puts "查询执行失败: #{e.message}" ensure # 确保数据库连接最终关闭 conn.close if conn end关键说明:
- 只要
exec方法没有抛出异常,就代表语句执行成功。此时可以用Result对象的cmd_tuples方法获取受影响的行数,辅助确认操作是否符合预期(比如UPDATE是否命中了目标行)。 - 直接打印Result对象显示内存地址是正常现象,因为它不是字符串类型。若要查看对象详情,可以调用
response.inspect方法,或者直接访问其属性(如cmd_status获取执行状态字符串)。
- 只要
内容的提问来源于stack exchange,提问作者ym733
相关产品推荐
相关产品推荐

