一尘不染

通过数据库行在Golang中创建地图

go

基本上在执行查询后,我想获取结果行并产生一个[]map[string]interface{},但是我不知道如何使用API​​进行此操作,因为该Rows.Scan()函数需要特定数量的参数来匹配所请求的列数(可能是类型)以及正确获取数据。

再次,我想泛化此调用并进行任何查询,然后将其转换为[]map[string]interface{},其中映射包含映射到该行的值的列名。

这可能效率很低,我计划稍后更改结构,interface{}以使其成为单个数据点的结构。

我将如何仅使用数据库/ sql包,或者在必要时使用数据库/ sql / driver包来做到这一点?


阅读 216

收藏
2020-07-02

共1个答案

一尘不染

看一下使用sqlx,它可以比标准数据库/ sql库更轻松地完成此任务:

places := []Place{}
err := db.Select(&places, "SELECT * FROM place ORDER BY telcode ASC")
if err != nil {
    fmt.Printf(err)
    return
}

你可以明显地替代[]Place{}[]map[string]interface{},但如果可能的话最好,如果你知道你的数据库的结构,使用结构。您不需要像在上那样进行任何类型的断言interface{}

2020-07-02