dongxianrang9269 2015-12-08 00:10
浏览 21
已采纳

从PostGres DB获取结构

I followed a thread in here and came up with this

var b Button

queryErr := connection.QueryRow("SELECT id_printer, name, has_children FROM button WHERE id_parent IS NULL;").Scan(&b.ID, &b.Name, &b.Children)
if queryErr != nil {
    response, err := json.MarshalIndent(b, "", "  ")
    fmt.Fprint(w, string(response))
    if err != nil {
        log.Println("Error on jsonmarshalindent Starter")
    }
} else {
    log.Println("Error on queryErr  starter")
    log.Println(queryErr)

    fmt.Fprint(w, "Error getting starter button")
}

it has 2 problems:

  1. It breaks on b.Children
  2. I don't know how to make it dynamically. for instance, the query returns 3 rows, but it depends on the company's client, it can be 3 or any number.

the struct is

type Starter struct {
    Buttons []Button `json:buttons`
}

type Button struct {
    ID       int    `json:id`
    Name     string `json:name`
    Children bool   `json:children`
}

Can someone shed some light in this please?

  • 写回答

1条回答 默认 最新

  • dongzhun6952 2015-12-08 00:35
    关注

    For the bool, it depends on the type of the actual column. If it isn't boolean, it won't map directly.

    You may need to store in a temporary variable first and then translate and assign to the field in Button to match.

    As for reading all rows, here's an example adapted from the docs.

    You use Query instead of QueryRow to get all rows.

    rows, err := db.Query("SELECT id_printer, name, has_children FROM button WHERE id_parent IS NULL;")
    if err != nil {
            log.Fatal(err)
    }
    defer rows.Close()
    var buttons []Button
    for rows.Next() {
            var b Button
            if err := rows.Scan(&b.ID, &b.Name, &b.Children); err != nil {
                    log.Fatal(err)
            }
            buttons = append(buttons,b)
    }
    // At this point, you have all your rows in the "buttons" variable
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问如何在openpcdet上对KITTI数据集的测试集进行结果评估?
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错