You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 16:46:00