Módulo DBI para acesso a dados no Ruby
Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)
[ Hits: 4.116 ]
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
Postmon - Consumindo uma API com Ruby
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
Dúvidas sobre a originalidade de conteúdos online (12)
Direcionar uma URL para Outra No Mikrotik (1)
Monitoramento pfsense com zabbix (4)
Erro na inicialização do Debian como resolver (5)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (4)