ホームページ > バックエンド開発 > Golang > Golang でデータベースの行をマップに効率的にマッピングするにはどうすればよいですか?

Golang でデータベースの行をマップに効率的にマッピングするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-08 05:25:15
オリジナル
704 人が閲覧しました

How to Efficiently Map Database Rows to Maps in Golang?

Golang でデータベース行からマップを作成する方法

database/sql パッケージでは、Rows.Scan() 関数にクエリ内の列に一致する特定の数のパラメータ。これは、未知のデータセットまたはさまざまなデータセットを操作する場合に制限となる可能性があります。より一般的な方法でデータベース行からマップを作成するには、次のアプローチを検討してください。

sqlx ライブラリの使用

sqlx ライブラリは、database/sql の代替手段を提供します。データベースからマップを作成するタスクを簡素化するパッケージrows:

// 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
}
ログイン後にコピー

Usage:

// 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート