May 1, 2009

Sequel を試す

インストール

sudo gem install sequel

使ってみる

初期化処理を行い、テーブルを作成し、データをいくつか投入してみます。

require 'rubygems'
require 'sequel'

# initialize
DB = Sequel.sqlite('test.db')

# create database
DB.create_table :items do
  primary_key :id
  String :name
  Float :price
end

# insert data
items = DB[:items]
items << {:name => 'foo', :price => 100}
items << {:name => 'bar', :price => 200}

まあ、何やってるかだいたいわかりますよね。

Sequel コンソール

以下のようにしてコンソールを立ち上げることができます。

sequel sqlite://test.db

諸々の初期化処理を行った状態で irb が起動してるんだと思います。
こういうツールが用意されてるっていいですね!

データの取得

上記で作成したデータをいろんなやり方で取得してみます。
Sequel コンソールで実行しました。

# count
> DB[:items].count
=> 2

# select all
> DB[:items].all
=> [{:price=>100.0, :name=>"foo", :id=>1}, {:price=>200.0, :name=>"bar", :id=>2}]

# select first
> DB[:items].first
=> {:price=>100.0, :name=>"foo", :id=>1}

# select id = 2
> DB[:items][:id => 2]
=> {:price=>200.0, :name=>"bar", :id=>2}

# select price = 200
> DB[:items].filter(:price => 200).all
=> [{:price=>200.0, :name=>"bar", :id=>2}]

# select price > 100
> DB[:items].filter{|i| i.price > 100}.all
=> [{:price=>200.0, :name=>"bar", :id=>2}]

# select price < 100
> DB[:items].filter('price < ?', 200).all
=> [{:price=>100.0, :name=>"foo", :id=>1}]

# select by sql
> DB['select * from items'].all
=> [{:price=>100.0, :name=>"foo", :id=>1}, {:price=>200.0, :name=>"bar", :id=>2}]

なんとなくイメージはつかめましたか?