Maison >développement back-end >Golang >Comment partager une connexion MySQL entre les gestionnaires HTTP Go ?

Comment partager une connexion MySQL entre les gestionnaires HTTP Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-12 21:42:021052parcourir

How to Share a MySQL Connection Across Go HTTP Handlers?

Partage de la connexion MySQL dans les gestionnaires HTTP Go

Dans Go, la gestion des connexions à la base de données est rendue transparente grâce au package base de données/sql. Ce guide fournit un aperçu détaillé de la façon d'établir une connexion MySQL et de la partager entre vos gestionnaires HTTP.

Établissement de la connexion

La fonction main() est responsable de l'initialisation de votre connexion à la base de données. . Ici, vous appelez sql.Open(), qui renvoie un handle de pool de connexions, pas une seule connexion. Ce handle encapsule la logique permettant de fournir des connexions selon les besoins, garantissant une utilisation efficace des ressources.

db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")

Configuration et Ping

Une fois le pool de connexions établi, vous pouvez le configurer pour répondre aux besoins de votre application. . Par exemple, vous pouvez définir le nombre maximum de connexions inactives dans le pool :

db.SetMaxIdleConns(100)

Pour vérifier la disponibilité de la base de données, vous devez effectuer un ping avant de continuer :

err = db.Ping()

Partage de la connexion

La clé du partage de la connexion réside dans le fait de faire de la variable db une variable globale accessible à la fois à main() et à vos gestionnaires HTTP. Cela garantit que toutes les goroutines peuvent utiliser le même pool de connexions.

var db *sql.DB // global variable to share between main and HTTP handlers

Utilisation de la connexion dans les gestionnaires HTTP

Au sein de vos gestionnaires HTTP, vous pouvez interagir avec la base de données en utilisant la connexion partagée. Par exemple, pour récupérer les données de la table "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)
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn