詳細検索

Obtenha os resultados de uma consulta MySQL em Ruby sem uso

Avatar
por maeno
1 min de leitura

Obtenha os resultados de uma consulta MySQL em Ruby sem uso
Traduzido do 日本語 • Ver original

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のユーザー名>

Related Articles