Sequel で単純に SQL を実行した結果の返り値

結論

Sequel::Mysql2::Dataset クラスのオブジェクト*1

具体例

0. 前提

sequelmysql2 の gem はインストールしてあるものとします。

$ gem install mysql2
$ gem install sequel

1. まずクライアントを定義

@db_client = Sequel.mysql2(
  host: '192.168.160.199',
  port: 60000,
  user: 'readonly',
  password: 'readonly',
)

2. 生のSQLを実行

  • 以下の SQL において、ヒットするレコードは 0件 とします
sql = %Q(
  SELECT
      *
  FROM
      my_table
  WHERE
      gender = 'female'
  ;
)
result_records = @db_client.fetch(sql) #=> result_records は Sequel::Mysql2::Dataset のオブジェクトに過ぎない(nil ではない)

result_records.each do |record| #=> result_records は存在しないので each されることはない
  @result_id = record[:id]
end

# result_records が存在しない場合は each がされることがなく、@result_id への代入が発生しないため、@result_id は nil になる
puts @result_id #=> nil

使用例

SELECT の結果を用いた条件分岐のときに有用かと思います。

*1:例えば SELECT でヒットしなかったからといって nil が返ってきたりはしない

Powered by はてなブログ