English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 연결 Mysql MySql2

이전 장에서는 Ruby DBI의 사용 방법을 소개했습니다. 이 장에서는 Ruby가 Mysql을 더 효율적으로 연결하는 mysql 드라이버를 소개합니다.2,현재 이 방식으로 MySql을 연결하는 것을 추천합니다。

mysql 설치2 드라이버:

gem install mysql2

–with를 사용해야 합니다-mysql-config을 설정하여 mysql_config의 경로를 지정하면 다음과 같습니다: –with-mysql-config=/some/random/path/bin/mysql_config

연결

데이터베이스 연결 문법은 다음과 같습니다:

client = Mysql2::Client.new(:host => "localhost", :username => "root")

추가 매개변수는 확인할 수 있습니다}} http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/MysqlAdapter.html

조회

results = client.query("SELECT * FROM users WHERE group='githubbers'")

특수 문자 인코딩

escaped = client.escape("gi'thu\"bbe\0r's")
results = client.query("SELECT * FROM users WHERE group='#{escaped}'")

결과 집합 반환 개수 계산:

results.count

결과 집합 반복:

results.each do |row|
  # row는 해시
  # 키는 데이터베이스 필드
  # 값은 MySQL 데이터와 일치
  puts row["id"] # row["id"].class == Fixnum
  if row["dne"]  # 없으면 nil
    puts row["dne"]
  end
end

온라인 예제

#!/usr/bin/ruby -w
require 'mysql'2'
 
client = Mysql2::Client.new(
    :host     => '127.0.0.1', # 호스트
    :username => 'root',     # 사용자 이름
    :password => '123456',    # 암호
    :database => 'test',     # 데이터베이스
    :encoding => 'utf8'       # 인코딩
    )
results = client.query("SELECT VERSION()")
results.each do |row|
  puts row
end

위 예제 실행 결과는 다음과 같습니다:

{"VERSION()"=>"5.6.21"}

접속 옵션

Mysql2::Client.new(
  :host,
  :username,
  :password,
  :port,
  :database,
  :socket = '/path/to/mysql.sock',
  :flags = REMEMBER_OPTIONS | LONG_PASSWORD | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION | MULTI_STATEMENTS,
  :encoding = 'utf'8
  :read_timeout = seconds,
  :write_timeout = seconds,
  :connect_timeout = seconds,
  :reconnect = true/false,
  :local_infile = true/false,
  :secure_auth = true/false,
  :default_file = ''/path/to/my.cfg',
  :default_group = 'my.cfg section',
  :init_command => sql
  )

더 많은 내용은 다음을 참조하세요:http://www.rubydoc.info/gems/mysql2/0.2.3/frames