Go では、データベース接続の管理は、database/sql パッケージを使用してシームレスに行われます。このガイドでは、MySQL 接続を確立し、それを HTTP ハンドラー間で共有する方法について詳しく説明します。
main() 関数は、データベース接続の初期化を担当します。 。ここでは、sql.Open() を呼び出します。これにより、単一の接続ではなく、接続プール ハンドルが返されます。このハンドルは、必要に応じて接続を提供するためのロジックをカプセル化し、リソースの効率的な利用を確保します。
db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")
接続プールが確立されたら、アプリケーションのニーズを満たすように構成できます。 。たとえば、プール内のアイドル接続の最大数を設定できます:
db.SetMaxIdleConns(100)
データベースの可用性を確認するには、続行する前に ping を実行する必要があります:
err = db.Ping()
接続を共有する鍵は、db 変数を main() と HTTP ハンドラーの両方にアクセスできるグローバル変数にすることにあります。これにより、すべてのゴルーチンが同じ接続プールを利用できるようになります。
var db *sql.DB // global variable to share between main and HTTP handlers
HTTP ハンドラー内では、共有接続を使用してデータベースと対話できます。たとえば、「hello」テーブルからデータを取得するには:
func HomeHandler(w http.ResponseWriter, r *http.Request) { var msg string err := db.QueryRow("SELECT msg FROM hello WHERE page=?", "home").Scan(&msg) if err != nil { fmt.Fprintf(w, "Database Error!") } else { fmt.Fprintf(w, msg) } }
以上がGo HTTP ハンドラー間で MySQL 接続を共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。