Módulo DBI para acesso a dados no Ruby
Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)
[ Hits: 3.886 ]
Homepage: http://bivee.com.br
Quando falamos de Ruby, já nos vem a memória o Rails (framework web mais famoso de todos os tempos), e com o Rails, está sempre junto seu fiel escudeiro, o ActiveRecord.
Mas, e quando queremos acessar um banco de dados para extrair informações, e não queremos ter que instalar todo um ORM para isso?
A dica é usar o DBI, que é um módulo Ruby que portou a ideia do DBI do Perl para criar uma interface comum de acesso a vários bancos de dados através de drivers.
Então, este script pretende mostrar como fazer um acesso a dados simples usando este módulo.
PRÉ-REQUISITOS
- ruby
- Módulo dbi instalado
- Driver do banco de dados (dbd-sqlite3, por exemplo)
REFERÊNCIAS
https://rubygems.org/gems/dbi
https://rubygems.org/gems/dbd-sqlite3
INSTALANDO AS GEMS
$ gem install dbi
$ gem install dbd-sqlite3
EXECUTANDO
$ ruby dbi.rb
#!/usr/bin/env ruby # 2016 (c) Daniel Vinciguerra # importa o modulo dbi require 'dbi' # delete database if File.exist? File.expand_path('database.db') File.unlink File.expand_path('database.db') end # imprime todos os dados da tabela def table_data (message) puts "\n\n[DEBUG] #{message}:"; puts "%-2s %-10s %-80s" % ['ID', 'NOME', 'CRIADOR']; puts '-' * 60; DBI.connect('DBI:SQLite3:database.db') do |dbh| dbh.select_all('SELECT * FROM linguagem') do | row | puts "%-2s %-10s %-80s" % row.to_a end end end # conexão com banco de dados DBI.connect('DBI:SQLite3:database.db') do |dbh| # executando sqls dbh.do(<<-SQL); CREATE TABLE linguagem ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "nome" VARCHAR(20) NOT NULL, "criador" VARCHAR(80) NOT NULL ); SQL # inserindo dados no banco sql = "INSERT INTO linguagem ('nome', 'criador') VALUES (?, ?)" dbh.do(sql, 'Perl', 'Larry Wall') dbh.do(sql, 'Python', 'Guido van Rossum') # obtendo os dados iniciais table_data("DADOS INICIAIS"); # inserindo dados (INSERT) sql = "INSERT INTO linguagem ('nome', 'criador') VALUES (?, ?)" dbh.prepare(sql) do |sth| sth.execute('Ruby', 'Yukihiro Matsumoto') end # obtendo os dados após insert table_data("DADOS APOS INSERT"); # buscando o ID lang = {} sql = "SELECT * FROM linguagem WHERE id = ? LIMIT 1" dbh.prepare(sql) do |sth| sth.execute(3) lang = sth.fetch end # atualizando os dados (UPDATE) if lang sql = "UPDATE linguagem SET 'criador' = ? WHERE id = ?" dbh.do(sql, 'Matz :)', lang[:id]) end # obtendo os dados após update table_data("DADOS APOS UPDATE"); # exclui um dado (DELETE) sql = "DELETE FROM linguagem WHERE nome != ?" dbh.do(sql, 'Ruby') # obtendo os dados após delete table_data("DADOS APOS DELETE"); end
Shoes - GUIfique scripst em ruby
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Definir tempo limite para acesso ssh (4)
Problema instalação do sige software gestão escolar script gratuito (0)
Tentando instalar o Ekattor School no xampp (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta