Módulo DBI para acesso a dados no Ruby
Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)
[ Hits: 4.288 ]
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
Exemplo de utilização de métodos em Ruby
Sistema de simulação de fabricantes de carros
Faça uma lista com o nome de pessoas
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)
Assisti Avatar 3: Fogo e Cinzas (1)
Conky, alerta de temperatura alta (7)









