MySQL-Verbindungen in Go-HTTP-Handlern verwalten
Das Datenbank-/SQL-Paket in Go verwaltet Datenbankverbindungen und verwaltet automatisch das Verbindungspooling. Beim Aufruf von sql.Open() wird ein Handle zurückgegeben, das einen Verbindungspool verwaltet. Dieses Handle stellt nach Bedarf neue Verbindungen her und stellt so sicher, dass immer eine Verbindung für Datenbankoperationen verfügbar ist.
Gemeinsame Nutzung des Datenbankverbindungshandles
In Ihrem Code haben Sie eine erstellt globale Variable db vom Typ *sql.DB in der main()-Funktion. Diese Variable stellt das Verbindungspool-Handle dar. Um es mit den HTTP-Handlern zu teilen, können Sie das Datenbankhandle als Parameter an die Handlerfunktionen übergeben.
Verwendung des Verbindungshandles in HTTP-Handlern
Im HomeHandler Mit der Funktion können Sie auf die Datenbankverbindung zugreifen, indem Sie das Datenbankhandle verwenden, das als Parameter übergeben wird:
import ( "database/sql" "fmt" ) func HomeHandler(w http.ResponseWriter, r *http.Request, db *sql.DB) { 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) } }
HTTP-Handler-Registrierung
In der main()-Funktion , wenn Sie die HTTP-Handler registrieren, können Sie das DB-Handle als Argument übergeben:
import ( "github.com/gorilla/mux" ) func main() { fmt.Println("starting up") db, err := sql.Open("mysql", "root@unix(/tmp/mysql.sock)/mydb") if err != nil { log.Fatalf("Error on initializing database connection: %s", err.Error()) } r := mux.NewRouter() r.HandleFunc("/", HomeHandler(db)) // Pass the db handle as an argument to the handler http.Handle("/", r) http.ListenAndServe(":8080", nil) }
Indem Sie diese Schritte befolgen, können Sie die MySQL-Verbindung zwischen HTTP-Goroutinen in Go effektiv teilen. Das automatische Verbindungspooling des Datenbank-/SQL-Pakets sorgt für optimale Leistung und Ressourcenverwaltung.
Das obige ist der detaillierte Inhalt vonWie teile ich ein MySQL-Verbindungshandle zwischen Go-HTTP-Handlern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!