Módulo DBI para acesso a dados no Ruby

Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)

[ Hits: 3.896 ]

Homepage: http://bivee.com.br

Download dbi.rb




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

  



Esconder código-fonte

#!/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

Scripts recomendados

Scan Port Interno

Árvore de Laranja interativo

Utilização de Classes em Ruby

Criando um objeto em Ruby

Exemplos de comentários e operadores de impressão na tela


  

Comentários
[1] Comentário enviado por fabio em 27/06/2016 - 21:03h

Interessante!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts