Go と MySQL を組み合わせることで、高速なWebアプリやAPIを開発できます。
Goでは標準ライブラリ database/sql を使ってMySQLへ接続するのが基本です。
本記事では、GoでMySQLへ接続する方法を「導入・SQL実行・実務でのポイント」まで初心者向けに解説します。
GoでMySQL接続する流れ
基本の流れ👇
- ドライバ導入
- DB接続
- Ping確認
- SQL実行
- Close処理
MySQLドライバを導入
go get github.com/go-sql-driver/mysql
基本の接続コード
package main
import (
"database/sql"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open(
"mysql",
"user:password@tcp(localhost:3306)/sample",
)
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(?)",
"Tomoya",
)
UPDATE実行
_, err := db.Exec(
"UPDATE users SET name=? WHERE id=?",
"Taro",
1,
)
DELETE実行
_, err := db.Exec(
"DELETE FROM users WHERE id=?",
1,
)
実務で重要なポイント
✔ defer Close
defer db.Close()
✔ SQLインジェクション対策
db.Query(
"SELECT * FROM users WHERE id=?",
id,
)
👉 プレースホルダ利用
✔ コネクション管理
db.SetMaxOpenConns(10)
ORM(GORM)との違い
GORM
| 項目 | SQL | ORM |
|---|---|---|
| 柔軟性 | 高 | 中 |
| 学習コスト | 中 | 低 |
| 実務性能 | 高 | 高 |
実務での応用
- API開発
- 管理画面
- ECサイト
- SaaS開発
よくある失敗
❌ Close忘れ
❌ SQL直書き乱立
❌ エラーチェック不足
ベストプラクティス
- Ping確認
- Prepare利用
- Connection Pool管理
- ORMとの使い分け
💡 結論
👉
「Go×MySQLは高速バックエンド開発の王道構成」


コメント