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

golang gorp插入多条记录

golang gorp插入多条记录

Go
桃花长相依 2022-01-10 10:27:36
使用 gorp 如何有效地插入多条记录?即不是一次插入一个,是否有批量插入?var User struct {   Name string   Email string   Phone string}var users []Usersusers = buildUsers()dbMap.Insert(users...) //this fails compilation//I am forced to loop over users and insert one user at a time. Error Handling omitted for brevitygorp有更好的机制吗?驱动程序是 MySQL。
查看完整描述

2 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

当我发现了一些其他资源的原因,这并不工作,是interface{}和User{}没有在内存中相同的布局,因此,他们的切片兼容的类型不。建议的解决方案是转换[]User{}为[]interface{}in for 循环,如下所示:https : //golang.org/doc/faq#convert_slice_of_interface


仍然需要注意:您需要对DbMap.Insert()函数使用指针。


这是我解决它的方法:


s := make([]interface{}, len(users))

for i, v := range users {

    s[i] = &v

}

err := dbMap.Insert(s...)

注意这&v很重要,否则Insert会抱怨非指针。


查看完整回答
反对 回复 2022-01-10
?
慕森王

TA贡献1777条经验 获得超3个赞

看起来 gorp 没有任何东西可以为原始 SQL 或多值插入提供包装器(这始终取决于 SQL 方言)。
您是否担心速度或交易?如果没有,我只会在 for 循环中进行插入。

查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

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