Goでデータベースにアクセスする方法の紹介です。
今回はPostgreSQLにアクセスするための方法です。
## 事前準備
DBにアクセスするために、いくつかモジュールを入れます。
```bash
`gutter:false;
$ go get github.com/go-gorp/gorp
$ go get github.com/lib/pq
```
gorpとPostgreSQLのドライバーのpqを用意します。
サンプルコード
```go
`gutter:true;
type Comment struct {
Id int64 `db:"id,primarykey,autoincrement"`
Name string `db:"name,notnull,size:200"`
Text string `db:"text,notnull,size:400"`
Created time.Time `db:"created,notnull"`
Updated time.Time `db:"updated,notnull"`
}
func main() {
dsn := os.Getenv("DSN")
fmt.Printf("DSN=%s\n", dsn)
db, err := sql.Open("postgres", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
dbmap := &gorp.DbMap{Db: db, Dialect: gorp.PostgresDialect{}}
dbmap.AddTableWithName(Comment{}, "comments")
err = dbmap.CreateTablesIfNotExists()
newComment := Comment{Name: "Azusa", Text: "にゃ〜"}
err = dbmap.Insert(&newComment)
if err != nil {
log.Fatal(err)
return fmt.Sprintf("Error :%v", err)
}
var comments []Comment
dbmap.Select(&comments, "SELECT * FROM comments")
fmt.Printf("select %v", comments)
}
```
DSNは以下の書式です。
サンプルコードは環境変数で定義しています。
```text
`gutter:false;
export DSN=postgres://user1:password@database:5432/testdb?sslmode=disable
```
DSN=postgres://{DBのユーザ名}:{パスワード}@{DBサーバのアドレス}:{DBのポート番号}/{テーブル名}?sslmode=disable
CreateTablesIfNotExistsを使うと、DBにテーブルがない場合に作成してくれます。
type Comment struct ... でテーブルを定義していますが、`db:"name,notnull,default:'Yui',size:200"`のようにdefaultを指定していたら、Insertした時にNameを指定していても毎回defaultになってしまいました。
(定義の仕方が悪かっただけかも??)
ひとまずDBを操作する事はできるので詳しい事はもっと触るようになった時に調べます。
## サンプルコード
サンプルコードは[Github](https://github.com/k28/go-ORM-Sample)に上げてあります。
## 参考
- みんなのGo言語 改訂2版 (技術評論社)
0 件のコメント :
コメントを投稿