Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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を二重定義してしまうからです。今回は確認用なのでエラー処理をサボリました。すみません。