ActiveRecord代替: mysql2を利用したDB操作のメモ

RubyでDB操作をする際はActiveRecordを利用するのですが、事情があってActiveRecordが利用できない環境でDB操作の必要があったのでmysql2の操作をするメモ。
信頼できない文字列を利用してSQLを組み立てる時はMysql2::Client.escapeするのを忘れずに。

require "mysql2"

host = "example.rds.amazonaws.com"
user = "admin"
password = "secret"
database = "example_production"

db = Mysql2::Client.new(host: host, username: user, password: password, database: database)

stmt = db.prepare("INSERT INTO users (name, email) VALUES (?, ?)")

[
  { name: "user1", email: "user1@example.com" },
  { name: "user2", email: "user2@example.com" },
].each do |params|
  stmt.execute(params[:name], params[:email])
  user_id = db.query("SELECT LAST_INSERT_ID() AS id").first["id"]
  params[:id] = user_id
end

rows = db.query("SELECT * FROM users")
rows.each do |row|
  p row
end