2013年11月21日木曜日

Golang Cafe #4

11/17(日)に開催された「Golang Cafe #4」に参加してきました。

参加者は +Takashi Yokoyama さん、+Takanobu Hagino さん、私の3名でした。

今回はdatabase/sqlパッケージとlib/pqドライバーを使ってPostgreSQLへのアクセスを試みました。

数あるGoのデータベースドライバーの中からpqが選択されたのは、ピュアGoで地雷も少ないだろうという理由からでした。

私にとって初のPostgreSQLでしたので、brewでインストールしてから参加しました。

$ brew install postgresql

開始早々、今回も簡単に「プチPostgreSQL勉強会」を開催して頂きました。
# すぐに本題のGoに入れず、すみませんm(__)m > メンバー各位

(1) ホームディレクトリー配下に「data」という名前でデータベース情報を格納するディレクトリーを作成。

$ cd
$ mkdir data

(2) PosgreSQLのコマンドパスにカレントディレクトリーを移動。
# 早く本題に入りたかったので、.bashrcなどへの追加作業は後回しに。

$ cd /usr/local/Cellar/postgresql/9.3.1/bin/

(3) データベースクラスターを作成。

$ ./initdb ~/data/

(4) データベースサーバーを起動。

$ ./pg_ctl -D ~/data/ start

(5) 「sampledb」という名前でデータベースを作成。

$ ./createdb sampledb

(6) 「sampledb」データベースが作成されていることを確認。

$ ./psql -l
                              List of databases
   Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges 
-----------+-------+----------+-------------+-------------+-------------------
 postgres  | usrid | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 sampledb  | usrid | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 

(7) 「sampledb」に接続。

$ ./psql -d sampledb

(8) テーブル定義ファイル「table.sql」を実行してテーブルを作成。

sampledb=# \i $GOPATH/src/golangcafe/sample.com/dbtest/table.sql
CREATE TABLE
CREATE TABLE
INSERT 0 1
INSERT 0 1

pqドライバーは go get コマンドでインストールしました。

$ go get github.com/lib/pq

今回のサンプルも横山さんのGitHubから取得して使用しました。
# お忙しい中、毎回、ありがとうございますm(__)m > 横山さん

$ cd $GOPATH/src
$ git clone https://github.com/tyokoyama/golangcafe

テストファイル「db_test.go」にて、データベース接続のためのユーザー名を書き換えて、

$ vi golangcafe/sample.com/dbtest/db_test.go

 10 func getConnection() (*sql.DB, error) {
 11 //  return sql.Open("postgres", "user=gdgchugoku dbname=sampledb sslmode=verify-full")
 12     return sql.Open("postgres", "user=[ユーザー名] dbname=sampledb sslmode=disable")
 13 }

go test コマンドでテストを実行して、接続を確認しました。

$ go test golangcafe/sample.com/dbtest/db_test.go 
ok   command-line-arguments 0.056s

今回は、横山さんが目指していた本来の姿である「もくもく会」状態となり、途中からツイートもなくなる程に全員がのめり込んでコーディングを行っていました。

個人的には、課題であった insert, update, delete 文の実装までは行えましたが、内容を理解するまでには至らなかったので、公開される他メンバーのブログを拝見しつつ復習させて頂きますm(__)m

今回も(!?)肝心のdatabase/sqlでのデータベースアクセスについては書けておりませんので、詳細&技術な内容につきましては、横山さんや萩野さんのブログをご覧下さい。


ちなみに、今回は「名物ビーフストロガノフ」でした!

[2013.11.24] 萩野さんのブログへのリンクを追加しました。

0 件のコメント: