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 |