感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Rubyでデータベースを操作してみる。まずはテーブルを作って値を取り出してみるところから。

スポンサーリンク

CRUD操作とは

データベースが提供するテーブルの基本操作は主に4種類ある。

  • Create

テーブルにデータを作成する。
SQLではinsert文に相当する

  • Update

テーブルのデータを更新する。
SQLではupdateに相当する。

  • Read,Retrieve

テーブルのデータを読む。SQLではselect文に相当する

  • Delete

テーブルのデータを削除する。
SQLではdelete文に相当する。

MacにデフォルトでインストールされているSQLite3を使って、少しデータベースをいじってみる。


test01.dbというデータベースを作成する

$ sqlite3 test01.db

次にテーブルを作成してみる。

create table person(
name varchar(50),
age int
);

で、作ったテーブルにデータを入れてみる。

insert into person values ('sho322',28);
insert into person values ('DJaoi',30);
insert into person values ('kazu_fujisawa', 38);

最後に、入れたデータを検索してみる。

sqlite> select * from person;
sho322|28
DJaoi|30
kazu_fujisawa|38

Ruby/DBIとは

Ruby/DBIは、異なる種類のデータベースであっても、同じようなプログラムによってアクセスできるという機能を提供する。
JDBCみたいなもの。データベースインターフェースという。

RubyのアプリケーションからはDBIを意識すればよく、様々なデータベースに特化したDBD(=データベースドライバ)の差異はDBIが吸収する。
こうやって抽象化することで、データベースの変更による影響などを最小限に抑えることができる。

sqlite3-rubyをインストールする。

RubyからSQLiteにアクセスするためのライブラリをインストールするコマンドは以下の通り。

$ gem install sqlite3-ruby

dbiとdbd-sqlite3のインストール

Ruby/DBIの上位層であるDBI層のパッケージをインストールするコマンドは以下の通り。

$ gem install dbi
$ gem install dbd-sqlite3

さて、ここまで書いた知識を活用して、DBから値を取得して、コンソールに表示してみよう。
サンプルはこちら。
connectdb.rb

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

dbh = DBI.connect('DBI:SQLite3:test01.db')

dbh.select_all('select * from person') do |row|
    print "row=#{row} \n"
    print "name = #{row[0]}\n"
    print "age  = #{row[1]}\n"
    print "\n"
end

dbh.disconnect
dbh = DBI.connect('DBI:SQLite3:test01.db')

ここのところは、データベースに接続するところなんだけど、引数はデータソース名を指定する。
DSNと略するデータソース名は、第一要素(DBIのとこ)はデータソースの種別を記載する。
第二要素では、ドライバの種類を指定する。ここではSQLite3としている。
第三要素では、データベースファイル名を指定する。ここではtest01.dbとしている。

結果はこうなる。

$ ruby connectdb.rb 

row=sho32228 
name = sho322
age  = 28

row=DJaoi30 
name = DJaoi
age  = 30

row=kazu_fujisawa38 
name = kazu_fujisawa
age  = 38

これで、ひとまずRubyでDBに接続して、値を取り出すことができた。

この記事を書くために勉強した本

作りながら学ぶRuby入門 第2版

作りながら学ぶRuby入門 第2版

第21章。
ものすごく丁寧に解説してくれるので、作りながら「ちゃんと」勉強したい人にすごくいいと思う。
「作りながら学ぶ」系はけっこう解説がおざなりになりがちな本が多いけれど、これは初心者が次の一歩を踏み出すのにとても優しい本だと感じた。

感謝のプログラミング

今回で感謝のプログラミングは【687時間目】
10000時間まで、あと【9313時間】