gpt4 book ai didi

json - golang lib/pq postgresql 创建动态更新语句

转载 作者:IT王子 更新时间:2023-10-29 01:46:13 27 4
gpt4 key购买 nike

成功提交用户详细信息后,我从客户端获得了一个 JSON。

可以跳过 JSON 中的某些元素,因为它们未更新。

在 Golang 服务器端,我定义了一个等效的结构。

服务器成功地将 JSON 字节编码到结构中。

type user struct {
Id *int64 `json:",omitempty"`
Name *string `json:",omitempty"`
Age *int64 `json:",omitempty"`
}

如何根据可用的 JSON 元素创建动态更新语句?

例如,我可能会单独获取 Id 和 Age。我如何动态创建更新语句,例如 update user set age = $1 where id = $2另一次可能是 Id 和 Name。

最佳答案

如果您不想使用 ORM,请尝试使用像 Squirrel 这样的 SQL 生成器, 并在修改 sql 语句之前检查每个参数:

import (
sq "github.com/lann/squirrel"
"fmt"
)

statement := sq.Update("user").Where(sq.Eq{"Id": &u.Id})
if &u.Name != nil {
statement = statement.Set("Name", "Jack")
}
sql, args, err := statement.ToSql()
fmt.Println(sql)

在某些情况下,您可能需要先查询数据库,以确保输入数据未尝试将“Name”列显式设置为 null(例如 update user set Name = null ... ).

另一种方法是使用像 gorp 这样的“ORM-ish”包或 gorm ,两者都应该正确处理 sql 更新。

关于json - golang lib/pq postgresql 创建动态更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090797/

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