rubyからpostgresqlを使う
rubyからpostgresを使うには Ruby PostgreSQL拡張モジュールを使う。APIの説明はPostgres referenceを参照。
Debian(sid)でのモジュール名は libpgsql-ruby1.8。
$ sudo apt-get install libpgsql-ruby1.8
簡単な使い方を書いておく。
require 'postgres' # postgres に接続 conn = PGconn.connect("localhost", 5432, "", "", "testdb", "user", "passwd") # クエリを発行 res = conn.exec("select id, val1, val2 from test_table") begin res.num_taples.times do |row| res.num_fields.times do |col| print "#{res.getvalue(row, col)}, " end print "\n" end ensure res.clear if res != nil end # 以下でも同じ conn.query("select id, val1, val2 from test_table").each do |row| puts row.join(", ") end # 行追加 res = conn.exec("insert into test_table1 values (1, 'hoge', 'fuga')"); puts res.status # 成功すれば COMMAND_OK(1) が返る res.clear # 以下でも同じ。複数行追加するならこっちが便利 conn.insert_table("test_table", [ [2, 'hoge2', 'fuga2'], [3, 'hoge3', 'fuga3'] ]) # コネクションの切断 conn.close
PGconn.exec で返る PGresult は実行するたびにインスタンスが作られるので、不要になったら必ず clear しておくこと。
あと、トランザクションの管理は明示的に「BEGIN 〜 COMMIT or ROLLBACK」を exec しないといけない。