Ao processar Ruby + MySQL, acho que há muitos casos em que 'ruby-mysql' ou 'mysql2' é usado nas bibliotecas do sistema operacional MySQL, mas como era necessário realizar operações de consulta MySQL em um ambiente Ruby bruto sem essas bibliotecas, tentei generalizar o código-fonte que escrevi naquele momento e resumi-lo. Bem... Pode ser que quase não seja necessário, mas achei que seria bom compartilhar como uma DICA.
mysql_query.rb
db = { :d b_config => "~/.user.cnf", :d nome_b_=> "database_name" }
consulta = "SELECIONAR * DE db_table_name ONDE primary_key_id = 1;"
res = '/usr/bin/mysql --defaults-extra-file=#{db.fetch(:d b_config)} -D #{db.fetch(:d b_name)} -e \"#{query}\" '
se for vazio? então
p "dados não são nenhum."
senão
linhas = res.split("\n")
colunas = linhas.primeiro.dividido("\t")
Resultados = []
lines.each_with_index { |linha, i|
Se eu > 0 então
tmp_hash = {}
valores = linha.divisão("\t")
values.each_index { |j|
se values[j].match(/^\d+$/) então
tmp_hash[colunas[j]] = valores[j].to_i
senão
tmp_hash[columns[j]] = values[j].to_s
fim
}
resultados < tmp_hash
end
}
p results
end
やってることは、コマンドラインでMySQLのクエリを発行しているのと同義で、標準出力としてのMySQLクエリの結果をRuby側で取り込んでハッシュにパースしているだけです。 なお、MySQL5.6からコマンドラインにパスワードを付与してmysqlコマンドを実行すると警告が出てしまうので、MySQLへの接続は.user.cnfのファイルに書いて、そっちからインポートするようにしている。
.user.cnf
[cliente]
usuário = <MySQLのユーザー名>
senha = <MySQLのログインパスワード>
apresentador = <MySQLのホスト名(RDSのエンドポイント等)>
Então, quando você rodar,
$ rubi mysql_query.rb
[{"primary_key_id"=>1, "column_name1"=>11, "column_name2"=>2, "column_name3"=>"e76a76ec", "column_name4"=>"médio", "column_name5"=>"a", "column_name6"=>"2316e746", "column_name7"=>"1.0.0", "datahora"=>"2014-09-29 10:41:35", "status"=>"feito", "descrição"=>"NULL"}]
$
E o resultado de execução da consulta MySQL retorna um array com o hash do nome da coluna como chave. Se você argumentar a consulta e transformá-la em uma função, ela também pode ser usada como um CRUD simples... Mas, afinal, quase não haverá necessidade (^_^;</MySQLのホスト名(RDSのエンドポイント等)></MySQLのログインパスワード></MySQLのユーザー名>