21
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mysql2を使ってRubyでMySQLへ接続する

Last updated at Posted at 2016-04-20

RubyからMySQLへ接続する場合には幾つかのライブラリがあるようですが、今回はMySql2というネイティブのlibmysqlclientを利用してやったみたのでメモ

以下のライブラリを使ってMySQLへ接続したときのメモ

brianmario/mysql2

環境

  • ruby 2.0.0p648
  • MySQL5.6をローカルにインストール済み
  • Mysql2は0.4.4を利用

Mysql2インストール

Mysql2ではlibmysqlclinetを使っているようなのでライブラリを事前にインストール

$sudo yum install mysql56-devel

これもインストールの必要アリだった。

$sudo yum -y install ruby-devel

まだダメだった。
しまった、ネイティブなのでgccとかその辺りをインストールしないといけない

$sudo yum groupinstall "Development Tools"

やっとでOK

$gem install mysql2

使ってみた

普通にselectしてみる。
今回はUnixドメインソケットを利用

select.rb
require 'mysql2'

client = Mysql2::Client.new(:socket => '/var/lib/mysql/mysql.sock', :username => 'testuser', :password => 'testtest', :encoding => 'utf8', :database => 'testdb')

results = client.query('select * from t1')
results.each do |row|
  puts row # {"id"=>1, "dep"=>1, "name"=>"hoge"}
end

できた。
PreparedStatementもサポートしているようなので使ってみる

select.rb
require 'mysql2'

client = Mysql2::Client.new(:socket => '/var/lib/mysql/mysql.sock', :username => 'testuser', :password => 'testtest', :encoding => 'utf8', :database => 'testdb')

statement = client.prepare('select * from t1 where id = ?')
results = statement.execute(1)
results.each do |row| 
  puts row # {"id"=>1, "dep"=>1, "name"=>"hoge"}
end

簡単。
他の使い方はREADMEを見れば良さそう。

21
24
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?