Módulo DBI para acesso a dados no Ruby
Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)
[ Hits: 4.167 ]
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
Postmon - Consumindo uma API com Ruby
Exemplo de utilização de métodos em Ruby
Exemplos de comentários e operadores de impressão na tela
IA local no bolso, novo visual no Raspberry Pi OS e mais destaques do software livre
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Kernel turbinado e GNOME 49 dominam o giro do dia no mundo Linux
Novidades Linux: Kernel 6.17, distros em ebulição e segurança em foco
Kernel ganha novos linters Rust e distros avançam com recursos de IA
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
SAMBA parou de compartilhar (2)
Orientação para instalar o Warsaw - módulo de proteção do Banco do Bra... (8)
systemd-resol... precisa ser reiniciado periodicamente (5)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 [RESOLVIDO] (6)
Fedora não reconhece James Donkey 102 Wireless Gaming Mouse (2)