GORM を使用して Go の基になる MySQL クエリにアクセスする方法
GORM は、Go 用の強力な ORM (オブジェクト リレーショナル マッピング) ライブラリです。クリーンで直感的な API を提供することで、データベースの対話を簡素化します。ただし、その下で実行されている生の SQL クエリにアクセスすると便利な場合があります。これは、データベース操作のデバッグや最適化に特に役立ちます。
SQL クエリ ログの取得
GORM から SQL クエリ ログを取得するには、LogMode を使用できます。方法。このメソッドは引数としてブール値を受け取ります。 true の場合、GORM は SQL クエリをコンソールに記録します。使用方法は次のとおりです。
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) }
デフォルトでは、LogMode はすべての SQL クエリをコンソールに記録します。開発環境などの特定の環境でのみクエリをログに記録したい場合は、To メソッドを使用して宛先を指定できます。
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) }
上記のコードは、カスタム ロガーを使用して開発環境でのみクエリをログに記録します (
GORM v2 では、DB タイプが *gorm.DB に置き換えられていることに注意してください。 *gorm.DB のメソッドと構文は DB のメソッドと構文に似ていますが、* はポインター レシーバーであることを示します。
以上がGo で GORM によって生成された基になる MySQL クエリを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。