Módulo DBI para acesso a dados no Ruby
Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)
[ Hits: 4.026 ]
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
Exemplos de comentários e operadores de impressão na tela
Pra quem contribui com artigos e dicas (2)
Arch Linux - Guia para Iniciantes (5)
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
O Que Fazer Após Instalar Ubuntu 25.04
O Que Fazer Após Instalar Fedora 42
Debian 12 -- Errata - Correções de segurança
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Alguém poderia me ajudar a escolher peças pra montar um desktop? (22)
Pra quem contribui com artigos e dicas (2)
Copiar Layout do Teclado para aplicar em outra Distribuição (2)