Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Rubyでsqlite3を使ってみる

sqlite3は、railsでも採用されている、軽量・高速なSQL形式の一つです。

導入法はこちらの記事を参照してください。

今回、以下のコードでsqlite3の基本的な流れを確認してみました。

# -*- coding: utf-8 -*-
require 'rubygems'
require 'sqlite3'

##データベース読み込み
  db = SQLite3::Database.new("database.db")
  ##ファイルが無い場合、テーブルの作成
  sql = <<SQL
create table Person (
  name varchar(10),
  age  integer,
  post varchar(200)
);
SQL
  db.execute(sql)
  puts "New file is created."

  #トランザクションによる値の挿入
  db.transaction do
    sql = "insert into Person values (?, ?, ?)"
    db.execute(sql, '橋本', 26, '広報部')
    db.execute(sql, '小泉', 35, '営業部')
    db.execute(sql, '亀井', 40, '営業部')
  end

  #レコードを取得する
  db.execute('select * from Person') do |row|
    #rowは結果の配列
    puts row.join("\t")
  end
  db.close

実行すると、以下のような結果が出力されるはずです。*1

User:~/rubyProject$ ruby sqltest.rb
New file is created.
橋本	26	広報部
小泉	35	営業部
亀井	40	営業部

昔から、どうもデータベースというものが苦手でしたが、このライブラリだと簡単に使えそうな感じです。
バリバリ使いこなすには、やはりデータベースの記述形式("insert into Person values (?, ?, ?)"とか)は避けられない感じですが……。

参考元

*1:二度目を実行すると、:in `initialize': table Person already exists (SQLite3::SQLException) というエラーが出ます。Personを二重定義してしまうからです。今回は確認用なのでエラー処理をサボリました。すみません。