gpt4 book ai didi

mysql - 有没有更好的方法来编码 sql 行?

转载 作者:IT王子 更新时间:2023-10-29 01:53:04 25 4
gpt4 key购买 nike

我有以下结构:

type MyTable struct{
DBColA []byte `db:"cola" json:"-"`
ColA string `json:"cola"`
DBColB []byte `db:"colb" json:"-"`
ColB string `json:"colb"`
}

我映射到 []byte [以更好地处理我的 sql 中的空值][1]

当我抓取行时,我需要将其输出为 json。为此,我将 []byte 转换为字符串:

var rows []*MyTable
if _, err := Session.Select(&rows, sql, args...); err != nil {
log.Println(err)
}
for _, row := range rows{
row.ColA = string(row.DBColA)
row.ColB = string(row.DBColB)
}
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(rows); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}

在我的结构中包含 DBColA 和 ColA,然后将 DBColA 转换为字符串似乎非常低效……我有很多列。有没有更好的办法?

  [1]: https://github.com/go-sql-driver/mysql/wiki/Examples

最佳答案

你试过了吗gosqljsonhttps://github.com/elgs/gosqljson

看例子:

```戈兰

package main

import (
"database/sql"
"fmt"
"github.com/elgs/gosqljson"
_ "github.com/go-sql-driver/mysql"
)

func main() {
ds := "username:password@tcp(host:3306)/db"
db, err := sql.Open("mysql", ds)
defer db.Close()

if err != nil {
fmt.Println("sql.Open:", err)
}

theCase := "lower" // "lower" default, "upper", camel

a, _ := gosqljson.QueryDbToArrayJson(db, theCase, "SELECT ID,NAME FROM t LIMIT ?,?", 0, 3)
fmt.Println(a)
// [["id","name"],["0","Alicia"],["1","Brian"],["2","Chloe"]]

m, _ := gosqljson.QueryDbToMapJson(db, theCase, "SELECT ID,NAME FROM t LIMIT ?,?", 0, 3)
fmt.Println(m)
// [{"id":"0","name":"Alicia"},{"id":"1","name":"Brian"},{"id":"2","name":"Chloe"}]

}

````

关于mysql - 有没有更好的方法来编码 sql 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28014078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com