首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >golang gorp插入多条记录

golang gorp插入多条记录
EN

Stack Overflow用户
提问于 2016-05-03 03:56:59
回答 2查看 1.4K关注 0票数 1

使用gorp如何有效地插入多条记录?也就是说,有没有批量插入,而不是一次插入一个?

代码语言:javascript
复制
var User struct {
   Name string
   Email string
   Phone string
}
var users []Users
users = 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 brevity

gorp有没有更好的机制?驱动程序为MySQL。

EN

回答 2

Stack Overflow用户

发布于 2016-09-08 01:43:21

正如我在其他参考资料中发现的那样,这种方法不起作用的原因是interface{}User{}在内存中的布局不同,因此它们的分片不是兼容类型。建议的解决方案是在for循环中将[]User{}转换为[]interface{},如下所示:https://golang.org/doc/faq#convert_slice_of_interface

还有一点需要注意的是:你需要为DbMap.Insert()函数使用指针。

下面是我解决这个问题的方法:

代码语言:javascript
复制
s := make([]interface{}, len(users))
for i, v := range users {
    s[i] = &v
}
err := dbMap.Insert(s...)

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

票数 3
EN

Stack Overflow用户

发布于 2016-05-03 07:58:39

它看起来并没有为原始SQL或多值插入(总是依赖于SQL方言)提供包装器。

您担心的是速度还是事务?如果没有,我将只在for循环中执行插入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36990644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档