Maison > développement back-end > Golang > Comment afficher les requêtes MySQL sous-jacentes générées par GORM dans Go ?

Comment afficher les requêtes MySQL sous-jacentes générées par GORM dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-22 17:50:11
original
644 Les gens l'ont consulté

How to View Underlying MySQL Queries Generated by GORM in Go?

Comment accéder à la requête MySQL sous-jacente dans Go avec GORM

GORM est une puissante bibliothèque ORM (Object-Relational Mapping) pour Go. Il simplifie les interactions avec les bases de données en fournissant une API propre et intuitive. Cependant, il est parfois utile d'accéder aux requêtes SQL brutes exécutées en dessous. Cela peut être particulièrement utile pour déboguer ou optimiser les interactions de votre base de données.

Récupération du journal des requêtes SQL

Pour obtenir le journal des requêtes SQL de GORM, vous pouvez utiliser le LogMode méthode. Cette méthode prend une valeur booléenne comme argument. Si c'est vrai, GORM enregistrera les requêtes SQL sur la console. Voici comment vous l'utiliseriez :

package main

import (
    "gorm.io/gorm"
    "log"
)

func main() {
    db, err := gorm.Open("mysql", "user:password@tcp(localhost:3306)/database_name")
    if err != nil {
        log.Fatal(err)
    }

    // Enable log mode
    db.LogMode(true)

    var todos []Todo
    db.Find(&todos)
    db.Preload("User").Find(&todos)
}
Copier après la connexion

Par défaut, LogMode enregistre toutes les requêtes SQL sur la console. Si vous souhaitez uniquement enregistrer les requêtes dans certains environnements, tels que le développement, vous pouvez utiliser la méthode To pour spécifier la destination :

import (
    "fmt"
    "gorm.io/gorm/logger"
    "log"
    "os"
)

type DevLogger struct {
    logger.Interface
}

func (l *DevLogger) Printf(level logger.Level, format string, v ...interface{}) {
    if level == logger.Info || os.Getenv("ENV") == "development" {
        fmt.Println("QUERY: ", fmt.Sprintf(format, v...))
    }
}

func main() {
    db, err := gorm.Open("mysql", "user:password@tcp(localhost:3306)/database_name?parseTime=true")
    if err != nil {
        log.Fatal(err)
    }

    db.Logger = &DevLogger{Interface: logger.Discard}

    var todos []Todo
    db.Find(&todos)
    db.Preload("User").Find(&todos)
}
Copier après la connexion

Le code ci-dessus utilise un enregistreur personnalisé pour enregistrer uniquement les requêtes dans les environnements de développement ( lorsque ENV=development).

Notez que dans GORM v2, le type DB a été remplacé par *gorm.DB. Les méthodes et la syntaxe de *gorm.DB sont similaires à celles de DB, mais le * indique qu'il s'agit d'un récepteur de pointeur.

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