Sequel - The Sequel Console
README より、Sequel にはデータベースへアクセスするための IRB が用意されてます。
コマンドラインからこんなふうにして実行すると、IRB のプロンプトで Sequel を使ってデータベースをさわることができるようです。
sequel sqlite://test.db # カレントディレクトリーにある test.db
ということで、ちょっとやってみました。
SQLite でローカルなデータベースをさわってみることにします。ちなみに、この時点でカレントディレクトリにはなにもありません。空です。
sequel コマンドを使ってデータベースに接続してみます。コマンドを実行すると test.db は存在しないので、SQLite がデーターベースのファイルを自動的に作成します。
$ sequel sqlite://test.db Your database is stored in DB... irb(main):001:0>
実行すると、こんな具合に irb のプロンプトになります。ちなみに、Sequel のデータベースオブジェクトは DB という変数に入っているそうです。
さて、ここでテーブルを作成してみましょう。さっきの Sequel - A Short Example からコピペして CREATE TABLE してみます。
irb(main):001:0> DB.create_table :items do irb(main):002:1> primary_key :id irb(main):003:1> column :name, :text irb(main):004:1> column :price, :float irb(main):005:1> end => ["CREATE TABLE `items` (`id` integer PRIMARY KEY AUTOINCREMENT, `name` text, `price` float)"]
なるほど、こういう SQL に変換されるんですね。テーブルが作成されました。
さて、このテーブルにデータを入れてみましょう。これも、さっきの Sequel - A Short Example からコピペします。
irb(main):006:0> items = DB[:items]
=> #<Sequel::SQLite::Dataset: "SELECT * FROM `items`">
irb(main):007:0> items << {:name => 'abc', :price => rand * 100}
=> 1
irb(main):008:0> items << {:name => 'def', :price => rand * 100}
=> 2
irb(main):009:0> items << {:name => 'ghi', :price => rand * 100}
=> 3こんな風に、データセットにデータをハッシュで指定して追加していくと INSERT されます。戻り値はおそらくプライマリーキーですね。
追加したデータを取得してみましょう。これも、さっきの Sequel - A Short Example からコピペです。
irb(main):010:0> items.reverse_order(:price).print +--+----+----------------+ |id|name|price | +--+----+----------------+ | 3|ghi | 94.0507| | 2|def | 48.4604| | 1|abc | 12.9043| +--+----+----------------+ => nil
なるほどなるほど。データーベースに付属のシェルを使って SQL を入力する代わりに、Sequel と Ruby でコードを書くように作業できるというわけですね。
ということは、Sequel で作ったモデルの動作確認なんかに使えそうです。これは便利かも。
Sequel - Ruby の ORM (オブジェクトリレーショナルマッパー)