为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕桂英546537 2023-06-26 17:03:24
我试图在没有 where 条件的情况下查询 postgres 表中的所有结果,并通过传递 args ...interface {} 借助 sqlx db 查询将其映射到结构数组。但是下面粘贴的代码永远不会工作,而不是一一迭代和扫描结果,是否可以让以下代码工作?非常感谢您的投入。谢谢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}实际情况:没什么..
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

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

  2. 如果要直接扫描到 CustomData 切片并且使用 SQLX,则应使用 SQLX 特定的 Select 方法,而不是通用 SQL 查询。

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

所以在你的情况下:

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


查看完整回答
反对 回复 2023-06-26
?
喵喔喔

TA贡献1735条经验 获得超5个赞

您可以使用以下内容:


for rows.Next() {

    s := CustomData{}

    if err := rows.Scan(&s); err != nil {

        return err

    }

    fmt.Println(s)

}

如果你喜欢代码优先方法,你总是可以使用 ORM 库作为gorm ;如果你喜欢数据库优先方法,你可以使用sqlboiler


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信