Módulo DBI para acesso a dados no Ruby
Publicado por Daniel Vinciguerra (última atualização em 27/06/2016)
[ Hits: 4.063 ]
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
Faça uma lista com o nome de pessoas
Shoes - GUIfique scripst em ruby
Web Crawler em Ruby com Open-URI e Nokogiri
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Como gerar um podcast a partir de um livro em PDF
Organizando seus PDF com o Zotero
Erro no realm join [Resolvido]
Um programa para baixar vídeos: Parabolic
Como Definir o Painel Principal em Múltiplos Monitores no Linux Mint
Sempre que vou baixar algum pacote acontece o erro dpkg (7)
como instalo panfrost-dri e o driver panfrost fork , ou panfrost (12)