Sequelの使い方(SQLite)
下記のページを参考にSequelの使い方を勉強する。
README.rdoc
Sequelの簡単な使い方
例文に自分なりの解説を追加すると下記のようになった。
require 'rubygems' require 'sequel' DB = Sequel.sqlite # メモリ上のデータベースにアクセスするオブジェクト「DB」を作成 # itemsというテーブルを作成。 DB.create_table :items do primary_key :id # プライマリキーとなるInt型の列「id」を作成 String :name # String型の列「name」を作成 Float :price # Float型の列「price」を作成 end items = DB[:items] # テーブル「items」にアクセスするオブジェクトを作成 # テーブル「items」にレコードを挿入 items.insert(:name => 'abc', :price => rand * 100) items.insert(:name => 'def', :price => rand * 100) items.insert(:name => 'ghi', :price => rand * 100) # レコード数を印字 puts "Items count: #{items.count}" # priceの平均を印字 puts "The average price is: #{items.avg(:price)}"
WHERE句のように条件で絞り込む場合はfilterを使用するとよい。
require 'rubygems' require 'sequel' DB = Sequel.sqlite 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) # レコード数を印字 puts "レコード数: #{items.count}" # priceの平均を印字 puts "priceの平均: #{items.avg(:price)}" # priceの値が100以上のpriceの平均を印字 puts "priceの平均: #{items.filter('price > 100').avg(:price)}"
レコードの更新にはupdete、レコードの削除にはdeleteを使用する。
require 'rubygems' require 'sequel' DB = Sequel.sqlite 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) # レコード数を印字 puts "レコード数: #{items.count}" # priceの平均を印字 puts "priceの平均: #{items.avg(:price)}" #nameがabcのレコードのpriceを180に変更 items.filter('name = "abc"').update(:price => 180) # priceの平均を印字 puts "priceの平均: #{items.avg(:price)}" #nameがghiのレコードを削除 items.filter('name = "ghi"').delete # レコード数を印字 puts "レコード数: #{items.count}"
データベースファイルを作成する場合は、「Sequel.sqlite」の後にファイル名を指定する。
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) # レコード数を印字 puts "レコード数: #{items.count}" # priceの平均を印字 puts "priceの平均: #{items.avg(:price)}"
作成済みのデータベースファイルに接続するには、connnectを使用する。
require 'rubygems' require 'sequel' DB = Sequel.connect('sqlite://test.db') # 作成済みのtest.dbに接続 items = DB[:items] # レコード数を印字 puts "レコード数: #{items.count}" # priceの平均を印字 puts "priceの平均: #{items.avg(:price)}"