Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20140817095510_ruby_sqlite3 |
|
ruby_sqlite3
Ruby から SQLite3 に接続。
環境: % ruby -v ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] # Mac OS X Marvericks % sw_vers -productVersion 10.9.4
最初に sqlite3-ruby, dbd-sqlite3, dbi を gem install % sudo gem install sqlite3-ruby % sudo gem install dbd-sqlite3 % sudo gem install dbi
こちらがサンプルで使った db/table sample.db% sqlite3 -header -column -cmd '.width 7 9 30' sample.db "SELECT * FROM items;" sys_id item_num item_name ------- --------- ------------------------------ 1 100 Kind of Blue 2 100 Kind of Blue(Columbia) 3 200 Milestone
最初 DBI を使って接続したらこうなった・・・。 dbi_sample.rb
#! /usr/bin/ruby
# coding: utf-8
# this script doesn't work...
require 'rubygems'
require 'dbi'
dbh = DBI.connect('DBI:SQLite3:sample.db')
dbh.select_all("SELECT * FROM items") do |row|
p row
end
dbh.disconnect
上記のスクリプトを実行しても nil が返ってきてしまう。 % dbi_sample.rb nil nil nil
なんで? と思って「Ruby 逆引きハンドブック」の DBI のところを開いてみたら「執筆時点では、Ruby 1.9には対応していません」(2009年現在)とあって、ああそしてまだなのねと理解。
目的は SQLite3 に接続することなので、DBI は諦めて require 'sqlite3' で攻めることに。 sqlite3_sample.rb
#! /usr/bin/ruby
# coding: utf-8
require "sqlite3"
db = SQLite3::Database.new "sample.db"
db.execute( "select * from items" ) do |row|
p row
end
実行してみる。 % sqlite3_sample.rb ["1", "100", "Kind of Blue"] ["2", "100", "Kind of Blue(Columbia)"] ["3", "200", "Milestone"]
https://github.com/sparklemotion/sqlite3-ruby
|
| © Shin Nakamura/BasicWerk 2014 |