Ubuntu + SQLite3 + Ruby = 簡易データベースの準備
これまでPostgreSQLやMySQLでデータベースを構築して、Webアプリケーションを作成してきたけど、なんだかいつもしっくりこない。RDBMSを使っても、結局はローカルでアクセスする場合がほとんどだし、それほどトラフィックがあるわけでもなく、速度も要求されない。
僕の場合は、その多くがテストか小規模のものなので、わざわざこれらRDBMSを使わなくても簡単に利用できるものがあればそれを使ってもかまわない。というよりむしろ、そちらの方が便利が良い。
ということで、代替手段を探してみるとSQLiteというのが一番良さそう。
では早速Ubuntuにインストールしてみる。
http://techno.hippy.jp/rorwiki/?HowtoUseSQLite
上記URLを参考にして下記コマンドでインストールしてみる。
$ sudo apt-get install libsqlite3-dev sqlite3 swig
他にもlibsqlite3-0をインストールするように書いてあったけど、locateしてみたら入ってそうだったので除外してます。
次にRuby用のモジュールをgemでインストール。
$ sudo gem1.8 install sqlite3-ruby
まずはSQLite3の動作確認。
$ sqlite3 sample.db
SQLite version 3.4.2
Enter "".help"" for instructions
sqlite> create table `test` (
...> id integer primary key,
...> name varchar(255)
...> );
sqlite> .schema
CREATE TABLE `test` (
id integer primary key,
name varchar(255)
);
sqlite> insert into test values(1,'test');
sqlite> insert into test values(2,'test');
sqlite> select * from test;
1|test
2|test
sqlite> .quit
おぉ、動いてる動いてる。
なかなか面白いですね。
では次にRubyからの接続確認。
$ irb
irb(main):001:0> require 'sqlite3'
LoadError: no such file to load -- sqlite3
from (irb):1:in `require'
from (irb):1
from :0
何?...ちょっと調べてみたらgemで入れたものはgemをrequireしないとだめなのね。
しかも、どこに行ってもActiverecordを使った接続の解説ばかり...なんだか気に入らない。
ということで、純粋なライブラリを入れ直し。
$ sudo apt-get install libsqlite3-ruby
またirbで接続確認。
$ irb
irb(main):001:0> require 'sqlite3'
=> true
irb(main):002:0> db=SQLite3::Database.new(""sample.db"")
=> #<SQLite3::Database:0xb7ac2878 @closed=false, @handle=#
irb(main):003:0> sql =<<EOFrnirb(main):004:0"" insert into test values(3, 'ddd');rnirb(main):005:0"" EOFrn=> ""insert into test values(3, 'ddd');""rnirb(main):006:0> db.execute(sql)
=> []
irb(main):007:0> exit
おおぉ、いきましたね。
では、次に入力した内容をコマンドラインで確認してみます。
$ sqlite3 sample.db
SQLite version 3.4.2
Enter "".help"" for instructions
sqlite> select * from test;
1|test
2|test
3|ddd
sqlite> .quit
パチパチパチ...
ということで、SQLiteが使えるようになりました。Accessみたいにデータをファイルでやりとりできるから僕にはかなり便利。
これから、MySQL用に作ったライブラリをSQLite3用に転用する作業をしてみようかな。
参考URL
http://sqlite-ruby.rubyforge.org/sqlite3/faq.html
| 固定リンク
| コメント (0)
| トラックバック (0)
最近のコメント