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

Ruby conectar ao Mysql Mysql2

No capítulo anterior, introduzimos o uso do Ruby DBI. Neste capítulo, vamos discutir como usar o driver mysql mais eficiente do Ruby.2, atualmente também é recomendado usar essa maneira para conectar ao MySql.

Instale o mysql2 Driver:

gem install mysql2

Você precisa usar –with-mysql-config configura o caminho do mysql_config, por exemplo: –with-mysql-config=/some/random/path/bin/mysql_config.

Conexão

Sintaxe de conexão com o banco de dados:

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

mais parâmetros podem ser consultados http://api.rubyonrails.org/classe/ActiveRecord/AdaptadoresDeConexão/MysqlAdapter.html.

pesquisa

resultados = cliente.query("SELECT * FROM users WHERE grupo='githubbers'")

escape de caracteres especiais

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

calcular o número de resultados retornados:

count_no_resultados

iterar sobre o conjunto de resultados:

cada linha_no_resultado.each |linha|
  # linha é um hash
  # chaves são os campos do banco_de_dados
  # valores são correspondentes aos dados no MySQL
  puts linha["id"] # linha["id"].class == Fixnum
  if linha["dne"]  # não existe é nil
    puts linha["dne"]
  fim
fim

exemplo online

#!/usr/bin/ruby -w
require 'mysql'2'
 
cliente = Mysql2::Client.new(
    :mestre => '127.0.0.1', # mestre
    :nome_de_usuário => 'root',  # nome_de_usuário
    :senha => '123456',  # senha
    :database => 'test',  # banco_de_dados
    :codificação => 'utf8'  # codificação
    )
resultados = cliente.query("SELECT VERSION()")
cada linha_no_resultado.each |linha|
  puts linha
fim

o resultado da execução do exemplo acima é:

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

opções_de_conexão

Mysql2::Client.new(
  :mestre,
  :nome_de_usuário,
  :senha,
  :porta,
  :database,
  :socket = '/path/to/mysql.sock',
  :flags = OPÇÕES_REMEMBER | SENHA_LONGA | BANDEIRA_LONGA | TRANSACÇÕES | PROTOCOLO_41 | CONEXÃO_SEGURA | MÚLTIPLOS_COMANDOS,
  :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
  )

Para mais conteúdo, consulte:http://www.rubydoc.info/gems/mysql2/0.2.3/frames.