RubyでMySQLとデータのやり取りをしたいと思いました。
gemで探すとライブラリがヒマラヤ程たくさん出ててどれが良いのか良く解りませんでした。。。
こちらの記事を参考に、とりあえずmysql2を使ってみましたのでメモ
データを取ってきてループして表示させる
require "mysql2" # database 接続 $client = Mysql2::Client.new( :host => HOST_NAME, :username => DB_USER, :password => DB_PASSWORD, :database => DATABASE_NAME ) sql = %{ SELECT * FROM #{$table} } res = $client.query(sql) # resはMysql2オブジェクト res.each{|row| p row # 各レコードが `{ key => value}` 形式のオブジェクトになっている }
prepared statement
prepared statementがサポートされてる。けど、使えるのは?
だけで:name
みたいに名前をつけたりはできないっぽい。
Prepared statement support by nyaxt · Pull Request #289 · brianmario/mysql2 · GitHub
Prepared statements are supported, as well. In a prepared statement, use a ? in place of each value and then execute the statement to retrieve a result set. Pass your arguments to the execute method in the same number and order as the question marks in the statement.
statement = @client.prepare("SELECT * FROM users WHERE login_count = ?") result1 = statement.execute(1) result2 = statement.execute(2) statement = @client.prepare("SELECT * FROM users WHERE last_login >= ? AND location LIKE ?") result = statement.execute(1, "CA")
データを1件だけとってくる
idを指定して1件だけデータを取ってくるようなパターン
.first
を使うと最初のレコードが取得できるので、1件しか取れないと決まっているような時はわざわざ.each
で回さなくてもOK。
def getDataByID(id) sql = %{ SELECT * FROM #{$table} WHERE id = ? } stmt = $client.prepare(sql) res = stmt.execute(id) # resはMysql2オブジェクト # 取得したデータの最初の1件を返す res.first end
追加したデータのidを返す
AUTO_INCREMENTのidがあるようなテーブルにデータを追加した時に追加したデータのidを取得したい。
$client.last_id
を使う。
def addData(name, age) sql = %{ INSERT INTO #{$table} (name, age) VALUES (?, ?) } stmt = $client.prepare(sql) res = stmt.execute(name, age) # res は nil # 最後に追加したレコードのidを返す $client.last_id end
※ idがないようなテーブルだと常に0
が返るっぽい。
結局、RubyでMySQLを使うナウいライブラリって何なのでしょう???
ルビーオンレールズとか使えって話なのですかね。やっぱり、
[参考]
- GitHub - brianmario/mysql2: A modern, simple and very fast Mysql library for Ruby - binding to libmysql
- mysql2 gemのprepared statement機能メモ - Qiita
- mysql - Get last inserted id using mysql2 gem - Stack Overflow
- Method: Mysql2::Client#last_id — Documentation for mysql2 (0.2.6)
- 作者: 久保秋真
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2013/11/21
- メディア: Kindle版
- この商品を含むブログ (3件) を見る