Módulo DBI para acesso a dados no Ruby
Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)
[ Hits: 4.334 ]
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
Obtendo o IP público (Internet) usando o Ruby
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Instalação do K3s Single-Node com Rancher no Ubuntu 24.04
Usei o NotebookLM para Auditar Logs do Linux
Cinnamon seria a aposta acertada frente às outras interfaces gráficas mais populares?
Samba 4 AD-DC 2026: Como instalar e configurar um Active Directory (via APT-GET)
[Resolvido] Sumiço de redes e micro quedas no iwd/iwgtk (Realtek rtw88)
Como Configurar DNS Reverso (PTR) em Ambientes Linux e Microsoft
Preparando o Ambiente para Administrar o Samba 4 a partir do Windows com RSAT
Problema ao instalar Linux Mint. (1)
Midia de instalação LM-21.3 não inicializa (11)
A diferença entre a fala de um Samuel e a fala de alguém que conhece o... (9)









