go - 如何将 sqlx 查询结果转换为结构数组?

标签 go sqlx

但是下面粘贴的代码永远不起作用,而不是一个一个地迭代和扫描结果,是否有可能让下面的代码起作用??

非常感谢您的投入。谢谢

type CustomData struct {
    ID                        string `db:"id" json:",omitempty"`
    Name                      string `db:"name" json:",omitempty"`
    Description               string `db:"description" json:",omitempty"`
    SourceID                  string `db:"sourceid" json:",omitempty"`
    StatusID                  string `db:"statusid" json:",omitempty"`
    StatusReason              string `db:"statusreason" json:",omitempty"`
    CreateTime                string `db:"createtime" json:",omitempty"`
    UpdateTime                string `db:"updatetime" json:",omitempty"`
}

var myData []CustomData

*sqlx.DB.Query("SELECT id as ID,  name as Name, description as Description, sourceid as SourceID, statusid as StatusID, statusreason as StatusReason, createtime as CreateTime, updatetime as UpdateTime FROM myschema.my_table", &myData)

// tried with following statement but din't work either
// *sqlx.DB.Query("SELECT * FROM myschema.my_table", &myData)

    for _, data := range myData {
        fmt.Println("--", data)
    }

预期结果:

--- 自定义数据{1,x,x,x,x} --- 自定义数据{2,x,x,x,x}

实际: 什么都没有..

最佳答案

  1. 您不需要重命名查询中的字段,因为您是在结构标记中定义实际的数据库字段。

  2. 如果您想直接扫描到 CustomData 的 slice 并且您正在使用 SQLX,则应该使用 SQLX 特定的 Select 方法,而不是通用的 SQL 查询。对 SQLX ( https://jmoiron.github.io/sqlx/#getAndSelect) 插图指南中的相关示例进行了稍微修改:

    pp := []Place{}
    err = db.Select(&pp, "SELECT * FROM place")

所以在你的情况下:

    myData := []CustomData
    err = db.Select(&myData, "SELECT * FROM myschema.my_table")

关于go - 如何将 sqlx 查询结果转换为结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718043/

相关文章:

postgresql - 使用 go 和 sqlc 库创建 api 时,我在 postgresql 中的数据会自动加密

ruby - Ruby 中的 AES-256-GCM 加密和 Golang 解密

c++ - 交换指针: equivalent of `std::unique_ptr::swap`

go - 如何跳过 Go 中文件的第一行?

go - Go 中的字节是否可以使用 nil 值?

go - 更新 MS SQL 表

postgresql - Golang结构的Postgres数组

go - 如何使用sqlx执行原始查询?