Sequelのmodelの使い方(SQLite)

下記のページを参考にSequelの使い方を勉強する。
README.rdoc

Sequelのmodelの使い方


下記のようなクラスを作っていたことを前提とする。

require 'rubygems'
require 'sequel'
DB = Sequel.sqlite('test.db')  # test.dbを作成し、接続

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

items = DB[:items] 

items.insert(:name => 'abc', :price => 90)
items.insert(:name => 'def', :price => 120)
items.insert(:name => 'ghi', :price => 150)

クラス名をアクセスしたいテーブル名とし、Modelクラスを継承すると、簡単にテーブルにアクセスすることができるクラスを作成できる。

require 'rubygems'
require 'sequel'
DB = Sequel.connect('sqlite://test.db')  # test.dbを作成し、接続

class Items < Sequel::Model
end

#データベース名を表示
puts Items.table_name

#データの一覧を表示
print Items.all

#改行
puts 

#プリマリキーが1のデータのnameを表示
puts Items[1].name

f:id:ayaketan:20111216214230j:image

データの追加にはinsert、更新にはupdate、削除にはdeleteを使用する。

require 'rubygems'
require 'sequel'
DB = Sequel.connect('sqlite://test.db')  # test.dbを作成し、接続

class Items < Sequel::Model
end

#データベース名を表示
puts Items.table_name

#データの一覧を表示
print Items.all

puts

#データを追加
Items.insert(:name => 'jkl', :price => 180)

#データの一覧を表示
print Items.all

puts

#データを更新
Items.filter(:name => 'jkl').update(:price => 200)

#データの一覧を表示
print Items.all

puts

#データを削除
Items.filter(:name => 'jkl').delete

#データの一覧を表示
print Items.all

f:id:ayaketan:20111216214249j:image

色々な絞り込みを試してみる。

require 'rubygems'
require 'sequel'
DB = Sequel.connect('sqlite://test.db')  # test.dbを作成し、接続

class Items < Sequel::Model
end

#データの一覧を表示
print Items.all

puts

#nameがabcのレコードを表示
print Items.filter(:name => "abc").all

puts

#nameがabcのレコードのpriceを表示
print Items.filter(:name => "abc").get(:price)

puts

#nameがabcのレコードのpriceを表示
print Items.filter(:name => ['abc', 'def']).all

puts

#priceが100より大きいレコードを表示
print Items.filter('price > 100').all

f:id:ayaketan:20111216214315j:image