Maison > développement back-end > Golang > le corps du texte

Comment partager une connexion MySQL entre les gestionnaires HTTP Go ?

Patricia Arquette
Libérer: 2024-11-12 21:42:02
original
960 Les gens l'ont consulté

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")
Copier après la connexion

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)
Copier après la connexion

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

err = db.Ping()
Copier après la connexion

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
Copier après la connexion

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)
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal