Golang의 데이터베이스 행에서 맵을 생성하는 방법
database/sql 패키지에서 Rows.Scan() 함수에는 쿼리의 열과 일치하는 특정 개수의 매개변수. 이는 알 수 없거나 다양한 데이터세트로 작업할 때 제한될 수 있습니다. 보다 일반화된 방식으로 데이터베이스 행에서 맵을 생성하려면 다음 접근 방식을 고려하십시오.
sqlx 라이브러리 사용
sqlx 라이브러리는 데이터베이스/sql에 대한 대안을 제공합니다. 데이터베이스에서 맵을 생성하는 작업을 단순화하는 패키지 행:
// Define the function to create a map from rows func RowsToMap(rows *sql.Rows) ([]map[string]interface{}, error) { // Define the list to store the data data := []map[string]interface{}{} // Get the column names columns, err := rows.Columns() if err != nil { return nil, err } // Create a slice of interface{} to hold the data for each row values := make([]interface{}, len(columns)) // Create a slice of pointers to the values valuePtrs := make([]interface{}, len(columns)) for i, _ := range values { valuePtrs[i] = &values[i] } // Loop through the rows and add to the data list for rows.Next() { // Scan the row into the values slice err = rows.Scan(valuePtrs...) if err != nil { return nil, err } // Create a map to hold the data for the row row := make(map[string]interface{}) // Add the column names and values to the map for i, column := range columns { row[column] = values[i] } // Add the row map to the data list data = append(data, row) } return data, nil }
사용:
// Execute a query and get the rows rows, err := db.Query("SELECT * FROM mytable") if err != nil { // Handle error } // Create a map from the rows data, err := RowsToMap(rows) if err != nil { // Handle error } // Use the data as needed for _, row := range data { fmt.Println(row) }
이 접근 방식을 사용하면 열 이름이나 유형을 미리 지정하지 않고도 데이터베이스 행에서 맵을 생성할 수 있습니다.
위 내용은 Golang에서 데이터베이스 행을 맵에 효율적으로 매핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!