Maison >développement back-end >Golang >Comment afficher les requêtes MySQL sous-jacentes générées par GORM dans 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) }
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) }
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!