Go言語でWeb開発やAPI開発を行う際、必須になるのが「データベース接続」です。
特に MySQL や PostgreSQL は、実務で広く利用されています。
本記事では、GoでMySQL・PostgreSQLへ接続する方法を「基本〜実務レベル」まで解説します。
GoでDB接続する流れ
基本の流れ👇
- ドライバ導入
- DB接続
- SQL実行
- 結果取得
- Close処理
MySQL接続方法
ドライバ導入
go get github.com/go-sql-driver/mysql
接続コード
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
db, err := sql.Open(
"mysql",
"user:password@tcp(localhost:3306)/sample",
)
PostgreSQL接続方法
ドライバ導入
go get github.com/lib/pq
接続コード
import (
"database/sql"
_ "github.com/lib/pq"
)
db, err := sql.Open(
"postgres",
"host=localhost port=5432 user=postgres password=pass dbname=sample sslmode=disable",
)
接続確認(Ping)
err = db.Ping()
if err != nil {
panic(err)
}
👉 実務では必須
SELECT実行
rows, err := db.Query("SELECT id, name FROM users")
INSERT実行
_, err := db.Exec(
"INSERT INTO users(name) VALUES(?)",
"Tomoya",
)
実務で重要なポイント
✔ defer Close
defer db.Close()
✔ コネクションプール
db.SetMaxOpenConns(10)
✔ SQLインジェクション対策
db.Query("SELECT * FROM users WHERE id=?", id)
ORM(GORM)との違い
GORM
| 項目 | SQL | ORM |
|---|---|---|
| 学習コスト | 中 | 低 |
| 柔軟性 | 高 | 中 |
| 実務性能 | 高 | 高 |
実務での応用
- API開発
- 管理画面
- ECサイト
- SaaS開発
よくある失敗
❌ Close忘れ
❌ SQL直書き乱立
❌ トランザクション未対応
ベストプラクティス
- Ping確認
- Prepare利用
- コネクション管理
- ORM併用検討
💡 結論
👉
「DB設計と接続品質がシステム品質を決める」


コメント