GoからMySQLに接続する
GoからMySQLに接続する方法
必要なもの
- Go言語の開発環境
- MySQLデータベース
go-sql-driver/mysql
ドライバ
手順
go-sql-driver/mysqlドライバのインストール
go get github.com/go-sql-driver/mysql
コードの作成
以下のコード例は、database/sql
パッケージとgo-sql-driver/mysql
ドライバを使用して、MySQLデータベースに接続し、クエリを実行する例です。
package main
import (
"database/sql"
"fmt"
"github.com/go-sql-driver/mysql"
)
func main() {
// データベース接続情報
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database")
if err != nil {
panic(err)
}
defer db.Close()
// クエリ実行
rows, err := db.Query("SELECT * FROM users")
if err != nil {
panic(err)
}
defer rows.Close()
// 結果処理
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
panic(err)
}
fmt.Println(id, name)
}
}
コード解説
sql.Open()
関数を使用して、データベースに接続します。db.Query()
関数を使用して、クエリを実行します。rows.Next()
関数を使用して、結果をループ処理します。rows.Scan()
関数を使用して、結果の各行のデータをスキャンします。
コードの実行
以下のコマンドを実行して、コードを実行します。
go run main.go
実行結果
1 John Doe
2 Jane Doe
database/sql
パッケージは、データベースとの接続とクエリ実行のための汎用的なインターフェースを提供します。go-sql-driver/mysql
ドライバは、MySQLデータベースとの接続に必要な機能を提供します。- 詳細については、
database/sql
パッケージとgo-sql-driver/mysql
ドライバのドキュメントを参照してください。
補足
- 上記のコード例は基本的な例です。実際のアプリケーションでは、エラー処理や接続プーリングなどの機能を実装する必要があります。
- MySQLデータベースへの接続には、ファイアウォールの設定などが必要になる場合があります。
package main
import (
"database/sql"
"fmt"
"github.com/go-sql-driver/mysql"
)
func main() {
// データベース接続情報
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database")
if err != nil {
panic(err)
}
defer db.Close()
// クエリ実行
rows, err := db.Query("SELECT * FROM users")
if err != nil {
panic(err)
}
defer rows.Close()
// 結果処理
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
panic(err)
}
fmt.Println(id, name)
}
}
実行方法
go run main.go
1 John Doe
2 Jane Doe
GoからMySQLに接続する他の方法
github.com/go-xorm/xorm
は、ORM (Object-Relational Mapping) フレームワークです。ORMフレームワークを使用すると、SQLクエリを記述することなく、オブジェクト指向のコードでデータベース操作を行うことができます。
github.com/jmoiron/sqlx
は、database/sql
パッケージの拡張ライブラリです。sqlx
を使用すると、database/sql
パッケージよりも簡単にクエリを実行したり、結果を処理したりすることができます。
github.com/mattn/go-sqlite3
は、SQLiteデータベース用のライブラリです。SQLiteは、軽量で高速なデータベースエンジンです。
独自のドライバを使用する
上記のいずれの方法にも満足できない場合は、独自のドライバを作成することができます。database/sql
パッケージは、ドライバを作成するためのインターフェースを提供しています。
どの方法を選択するべきかは、アプリケーションの要件によって異なります。以下のような点を考慮する必要があります。
- アプリケーションの規模と複雑性
- 使用するデータベースの種類
- 開発者のスキルと経験
mysql database go