我正在寻找一个可靠的解决方案来从 Go 连接到 MySQL 数据库。我见过一些图书馆,但很难确定完整性和当前维护的不同状态。我没有复杂的需求,但我想知道人们依赖什么或最标准的解决方案来连接到 MySQL。
原文由 Sergi Mansilla 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在寻找一个可靠的解决方案来从 Go 连接到 MySQL 数据库。我见过一些图书馆,但很难确定完整性和当前维护的不同状态。我没有复杂的需求,但我想知道人们依赖什么或最标准的解决方案来连接到 MySQL。
原文由 Sergi Mansilla 发布,翻译遵循 CC BY-SA 4.0 许可协议
有几件事需要注意选择 1 行示例:
row := con.QueryRow("select mdpr, x, y, z from sometable where id=?",id)
cb := new(SomeThing)
err := row.Scan(&cb.Mdpr, &cb.X, &cb.Y, &cb.Z)
在此示例中缺少 row.Next()
。它需要调用 row.Next()
来获取返回的第一行。
图书馆也有一些不灵活之处,它以某种方式试图促进数据极简主义。如果您尝试选择不是 Scan 的列,它将抛出错误(不仅仅是警告)
原文由 Badoet 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
4 回答2.3k 阅读
5 回答1.4k 阅读
有一些驱动程序可用,但您应该只考虑那些实现 数据库/sql API 的驱动程序
MySQL 有两个快速可靠的驱动程序:
我已经在生产中使用了它们,程序运行了数月,连接数达到数百万而没有失败。
go-wiki 上列出了 其他 SQL 数据库驱动程序。
使用 MyMySQL 时导入:
使用 Go-MySQL-Driver 时导入:
使用 MyMySQL 连接和关闭:
使用 Go-MySQL-Driver 连接和关闭:
选择一行:
选择多行并构建一个包含结果的数组:
插入 :
您会发现在 Go 中与 MySQL 一起工作是一种愉快的体验:我 从来没有 遇到过问题,我的服务器运行了几个月没有错误或泄漏。大多数函数只接受可变数量的参数这一事实减轻了一项在许多语言中单调乏味的任务。
请注意,如果将来您需要使用另一个 MySQL 驱动程序,则只需更改一个 go 文件中的两行:执行导入的行和打开连接的行。