pgでPostgreSQLに接続する

SinatraのメモアプリをDB化するにあたりpg gemを使いPostgreSQLに接続しSQLを実行する方法を調べました。

結論

次の手順でpg gemでPostgreSQLへ接続しSQLを実行できる。

  1. PostgreSQLに接続するためのPGオブジェクトを作成。
  2. 作成したPGオブジェクトからSQLを実行するメソッドを呼び出す。
require 'pg'

# PGオブジェクト作成、SQL実行
connection = PG::Connection.new(dbname: 'memo_app')
all_memos = connection.exec('SELECT * FROM memos')

# DBから取得した結果を出力
all_memos.each do |memo|
  puts "id: #{memo['id']}, title: #{memo['title']}, content: #{memo['content']}"
end

# 実行結果
id: bffcbdbf-6191-4057-a8df-d274573a728a, title: test_memo, content: text_content
  • SQLを実行して取得したレコードは配列型になっています。
  • require 'pg' でgemを読み込むのを忘れずに!

pgとは?

RubyPostgreSQLを使うためのGem。 DB作成後、PGオブジェクト作成時にdbname を指定しただけで接続できたので驚いた。

ged/ruby-pg: A PostgreSQL client library for Ruby

PostgreSQLへの接続

Connection.new を使って接続用のPGオブジェクトを作成します。

PG: The Ruby PostgreSQL Driver

# PGオブジェクトを作成
connection = PG::Connection.new(dbname: 'memo_app')

今回はConnection.new への引数はdbname しか指定していませんが、porthost などを渡すこともできるようです。

ちなみに公式のサンプルにあるPG.connectPG::Connection.newエイリアスのようです。

exec系メソッド

DBににSQLを実行するメソッドです。使用用途別に複数のメソッドが用意されているので必要に応じて選択してください。

pg gem のexec系メソッドの使い分け - karlley's tech blog

今回のサンプルはシンプルにSQLを実行するメソッドであるexec を使いました。

まとめ

PostgreSQL接続に関する情報が上手く整理できていなかったのでスッキリして良かったです。 プラクティスも終盤なのでがんばります。

参照

ged/ruby-pg: A PostgreSQL client library for Ruby

PG: The Ruby PostgreSQL Driver

pg gem のexec系メソッドの使い分け - karlley's tech blog