Heim >Backend-Entwicklung >Golang >Wie kann ich zugrunde liegende MySQL-Abfragen anzeigen, die von GORM in Go generiert wurden?
So greifen Sie mit GORM auf die zugrunde liegende MySQL-Abfrage in Go zu
GORM ist eine leistungsstarke ORM-Bibliothek (Object-Relational Mapping) für Go. Es vereinfacht Datenbankinteraktionen durch die Bereitstellung einer sauberen und intuitiven API. Manchmal ist es jedoch nützlich, auf die Roh-SQL-Abfragen zuzugreifen, die darunter ausgeführt werden. Dies kann besonders beim Debuggen oder Optimieren Ihrer Datenbankinteraktionen hilfreich sein.
Abrufen des SQL-Abfrageprotokolls
Um das SQL-Abfrageprotokoll von GORM abzurufen, können Sie den LogMode verwenden Verfahren. Diese Methode verwendet einen booleschen Wert als Argument. Wenn „true“, protokolliert GORM die SQL-Abfragen in der Konsole. So würden Sie es verwenden:
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) }
Standardmäßig protokolliert LogMode alle SQL-Abfragen an der Konsole. Wenn Sie Abfragen nur in bestimmten Umgebungen protokollieren möchten, z. B. in der Entwicklung, können Sie die To-Methode verwenden, um das Ziel anzugeben:
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) }
Der obige Code verwendet einen benutzerdefinierten Logger, um nur Abfragen in Entwicklungsumgebungen zu protokollieren ( wenn ENV=Entwicklung).
Beachten Sie, dass in GORM v2 der DB-Typ durch *gorm.DB ersetzt wurde. Die Methoden und die Syntax für *gorm.DB ähneln denen von DB, das * zeigt jedoch an, dass es sich um einen Zeigerempfänger handelt.
Das obige ist der detaillierte Inhalt vonWie kann ich zugrunde liegende MySQL-Abfragen anzeigen, die von GORM in Go generiert wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!