Módulo DBI para acesso a dados no Ruby
Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)
[ Hits: 4.205 ]
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
Sistema de simulação de fabricantes de carros
Shoes - GUIfique scripst em ruby
Crivo de Eratóstenes Simples em Ruby
Exemplos de comentários e operadores de impressão na tela
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Problemas com Driver NVIDIA (1)
Programa fora de escala na tela do pc (21)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)









