Go と PostgreSQL を組み合わせることで、高性能なAPIやWebサービスを構築できます。
特にPostgreSQLは、堅牢性・拡張性が高く、実務で人気の高いデータベースです。
本記事では、GoでPostgreSQLへ接続する手順を「導入・SQL実行・実務ポイント」まで初心者向けに解説します。
GoでPostgreSQL接続する流れ
基本の流れ👇
- ドライバ導入
- DB接続
- Ping確認
- SQL実行
- Close処理
PostgreSQLドライバを導入
go get github.com/lib/pq
基本の接続コード
package main
import (
"database/sql"
"log"
_ "github.com/lib/pq"
)
func main() {
connStr := `
host=localhost
port=5432
user=postgres
password=pass
dbname=sample
sslmode=disable
`
db, err := sql.Open("postgres", connStr)
if err != nil {
log.Fatal(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
log.Fatal(err)
}
log.Println("接続成功")
}
SELECT実行
rows, err := db.Query(
"SELECT id, name FROM users",
)
INSERT実行
_, err := db.Exec(
"INSERT INTO users(name) VALUES($1)",
"Tomoya",
)
👉 PostgreSQLは $1 を使う
UPDATE実行
_, err := db.Exec(
"UPDATE users SET name=$1 WHERE id=$2",
"Taro",
1,
)
DELETE実行
_, err := db.Exec(
"DELETE FROM users WHERE id=$1",
1,
)
実務で重要なポイント
✔ defer Close
defer db.Close()
✔ コネクションプール
db.SetMaxOpenConns(10)
✔ SQLインジェクション対策
db.Query(
"SELECT * FROM users WHERE id=$1",
id,
)
MySQLとの違い
MySQL
| 項目 | MySQL | PostgreSQL |
|---|---|---|
| 特徴 | シンプル | 高機能 |
| JSON対応 | ○ | ◎ |
| 拡張性 | ○ | ◎ |
| 実務用途 | Web系 | 大規模開発 |
ORM(GORM)との連携
GORM
gorm.Open(postgres.Open(dsn), &gorm.Config{})
実務での応用
- REST API
- SaaS開発
- 管理画面
- 大規模システム
よくある失敗
❌ sslmode忘れ
❌ Ping未確認
❌ Close忘れ
ベストプラクティス
- Ping確認
- Prepare利用
- Pool管理
- ORMとの併用
💡 結論
👉
「Go×PostgreSQLは拡張性の高いAPI開発に最適」


コメント