从 Go 连接到 MySQL 的推荐方式是什么? [关闭]

2024-04-19

我正在寻找一个可靠的解决方案来从 Go 连接到 MySQL 数据库。我见过一些库,但很难确定完整性和当前维护的不同状态。我没有复杂的需求,但我想知道人们依赖什么或者连接MySQL的最标准的解决方案。


有一些驱动程序可用,但您应该只考虑那些实现数据库/sql http://golang.org/pkg/database/sql/ API as

  • 它提供了干净高效的语法,
  • 它确保您以后可以更改驱动程序,而无需更改代码(除了导入和连接之外)。

有两个快速可靠的驱动程序可用于 MySQL:

  • MyMySQL http://github.com/ziutek/mymysql
  • Go-MySQL-驱动程序 https://github.com/Go-SQL-Driver/MySQL/

我已经在生产中使用了它们,程序运行了数月,连接数达到数百万,没有出现故障。

其他 SQL 数据库驱动程序已在 go-wiki 上列出 http://code.google.com/p/go-wiki/wiki/SQLDrivers.

使用MySQL时导入:

import (
    "database/sql"
    _ "github.com/ziutek/mymysql/godrv"
)

使用 Go-MySQL-Driver 时导入:

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

使用 MySQL 连接和关闭:

con, err := sql.Open("mymysql", database+"/"+user+"/"+password)
defer con.Close()
// here you can use the connection, it will be closed when function returns

使用 Go-MySQL-Driver 连接和关闭:

con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()

选择一行:

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)

选择多行并用结果构建一个数组:

rows, err := con.Query("select a, b from item where p1=? and p2=?", p1, p2)
if err != nil { /* error handling */}
items := make([]*SomeStruct, 0, 10)
var ida, idb uint
for rows.Next() {
    err = rows.Scan(&ida, &idb)
    if err != nil { /* error handling */}
    items = append(items, &SomeStruct{ida, idb})
}

Insert :

_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)

你会发现使用 Go 和 MySQL 一起工作是一次愉快的经历:我never遇到问题时,我的服务器运行了几个月,没有出现错误或泄漏。事实上,大多数函数只接受可变数量的参数,这减轻了许多语言中乏味的任务。

请注意,如果将来您需要使用另一个 MySQL 驱动程序,则只需更改一个 go 文件中的两行:执行导入的行和打开连接的行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Go 连接到 MySQL 的推荐方式是什么? [关闭] 的相关文章

  • getArray 上的 SQLFeatureNotSupportedException

    使用 MySQL 5 5 STS 2 9 2 mysql connector java 5 1 21 bin jar 我想从 ResultSet 中获取一个数组 所以我这样编码 try Connection conn DriverManag
  • 从头开始使用映像部署无法启动

    我正在使用以下内容构建图像Dockerfile FROM golang 1 19 2 bullseye as builder COPY src src WORKDIR src RUN CGO ENABLED 1 go build race
  • 对于特定用户 MySQL,查找同一表内的日期范围重叠

    我绝不是 MySQL 专家 所以我正在寻求有关此事的任何帮助 我需要执行一个简单的测试 原则上 我有这个 简化的 表 tableid userid car From To 1 1 Fiesta 2015 01 01 2015 01 31 2
  • GQL中有OR运算符吗?

    我不知道这里是否有人问过这个问题 我看到了几个关于 like 运算符的问题 但我不确定这是否是我正在寻找的 抱歉我在这方面是菜鸟 但我正在从 MySQL 迁移到 Google App Engine 并且想知道 GQL 中是否有类似于 MyS
  • 删除并加入同一个表

    是否可以执行连接同一个表的删除查询语句 我尝试过各种连接 内部 左侧 但没有运气 mysql 返回错误 我需要的例子 DELETE a FROM t1 AS a INNER JOIN t1 AS b USING some field b W
  • 如何使用mac杀死mysql进程

    I used ps ax grep mysql检查mysql进程是否存在 我发现 5323 s000 S 0 00 00 grep mysql 我想终止该进程 但号码自动更改 当我进入ps ax grep mysql 内容变化如下 5507
  • PHP 内部的连接分解

    我看到一篇关于连接分解的文章 场景 1 不好 Select from tag Join tag post ON tag post tag id tag id Join post ON tag post post id post id Whe
  • 每次使用 COUNT() 函数,还是存储该值并将其加一?

    我有一个带有用户 投票 表和 用户 表的数据库 我认为数据库会在短时间内变得相当大 所以我想使用最有效的方法 我想我可以每次使用 投票 表中的 WHERE 语句来 COUNT 投票数 或者我可以将分数存储在 用户 表中 每次投票时将其增加
  • Laravel 查询生成器 - 高级条件子句(可选参数)

    我需要带有接受可选参数的查询生成器的子句 例如 请考虑以下情况 我们有三个搜索字段 产品标题 公司名称和位置 邮政编码 城市或州 2 3 8 种可能性 该位置与 OR 连接 WHERE location postal code LIKE O
  • 如何在不使用完整备份的情况下使用生产数据刷新 SQL Server 测试实例

    我有两台 MS SQL 2005 服务器 一台用于生产 一台用于测试 并且两台服务器的恢复模型均为 完整 我将生产数据库的备份恢复到测试服务器 然后让用户进行更改 我希望能够 回滚对测试 SQL 服务器所做的所有更改 应用自测试服务器最初恢
  • 从 MySQL 转储中删除 DEFINER 子句

    我有一个数据库的 MySQL 转储 其中有 DEFINER 子句 如下所示 DEFINER root localhost 也就是说 这些 DEFINER 子句位于我的 CREATE VIEW 和 CREATE PROCEDURE 语句中 有
  • 使用 socket.io node.js 和传入消息的通知系统的架构实现和设计

    免责声明 我之前没有使用过node js 我以前没有使用过socket io 我正在考虑实现 Google Plus Facebook StackOverflow 风格的通知系统 我不是一个没有经验的开发人员 最终我会解决这个问题 但我只是
  • 如何使用 Laravel 查询生成器在 WHERE 条件周围添加括号

    我使用 Laravel 查询构建器根据用户的过滤器选择动态过滤数据 query DB table readings foreach selections as selection query gt orWhere id selection
  • MySQL使用BLOB的二进制存储VS OS文件系统:大文件、大数量、大问题

    我正在运行的版本 基本上 最新的一切 PHP 5 3 1MySQL 5 1 41阿帕奇 2 2 14操作系统 CentOS 最新 情况是这样的 我有数千个非常重要的文档 从客户合同到语音签名 客户对合同的授权录音 文件类型包括但不限于jpg
  • 创建数据库索引的最佳实践和“经验法则”有哪些?

    我有一个应用程序 它循环访问数据库表中的大量记录 并对该数据库中的记录执行大量 SQL 和 Net 操作 目前我在 PostgreSQL 上使用 Castle ActiveRecord 我在几个字段上添加了一些基本的 btree 索引 正如
  • Laravel - SQL - SQLSTATE[01000]:警告:1265 第 1 行列“nsfw”的数据被截断

    我试图保护数据库中的一些数据并收到以下错误 SQLSTATE 01000 警告 1265 第 1 行的列 nsfw 的数据被截断 nsfw 列的标准值是 0 这是我的桌子 nsfw 列也在模型中 fillable array 我想检测是否选
  • HSQLDB - 这是主数据库文件

    我在嵌入模式下使用 HSQLDB jdbc hsqldb file abc TESTDB 创建数据库后 文件夹abc有以下文件 TESTDB lck TESTDB script TESTDB log TESTDB properties 我的
  • 如何通过csv文件仅更新sql表的一列

    我有一个 csv 文件包含一些数据 在我的 Sql 数据库中 我有一个具有多个列名的表 现在我只想通过 csv 文件更新一列 谢谢 你可以这样尝试 Import the csv file to a temp table Update you
  • 插入值数组

    我有一个具有可变数量值的数组 除了内部带有查询的循环之外 是否有更有效或更好的方法将它们插入到我的数据库中 At 这个网站 http www desilva biz mysql insert html 有一个很好的 MySQL 多插入查询示
  • 让网站登录也能在 WordPress 上使用

    我使用 PHP 和 MySQL 开发了一个网站 该网站已经有登录和注册表单 myweb com 我已经在这个网址添加了 wordpressmyweb com blog 我想禁用 WordPress 上的登录和注册页面并强制用户使用我的 基本

随机推荐

  • Mysql用group by子句计算百分比?

    我需要计算第一季度内客户的百分比 并且状态为 可用 我正在做类似的事情 但没有给出正确的结果 SELECT DISTINCT Customer COUNT 1 select count 1 from table where QUARTER
  • 在什么情况下我需要为 IEnumerable 和 IQueryable 创建两种不同的扩展方法?

    假设我需要一个扩展方法 它仅从不同来源选择所需的属性 源可以是数据库或内存中的集合 所以我定义了这样的扩展方法 public IQueryable
  • 启用 addEventListener 回调来执行 put 操作

    我需要做一个全球性的addEventListener喜欢的东西 我正在使用 React Native 需要监听深层链接重定向事件 我无法弄清楚 redux saga 的方式来做到这一点 我需要启用一个put来自 addEventListen
  • btree 实现中的分段错误

    任何人都可以帮助消除这个分段错误 我已经在这个代码上工作了一个星期仍然无法调试它 这段代码是Btree的实现 插入部分工作正常 但删除部分出现分段错误 我无法调试它 有人可以帮忙吗 我已经根据此链接给出了输入 已将字母值转换为 ASCII
  • 使用 django-piston 时出现 400 Bad Request 错误

    我正在尝试使用 Piston 为 Django 提供 REST 支持 我已经按照提供的文档实现了我的处理程序 问题是我可以 读取 和 删除 我的资源 但无法 创建 或 更新 每次我点击相关 api 时 都会收到 400 Bad reques
  • 返回 NULL 的 Trello.NET 对象

    迪伦梅斯特 我尝试了 Trello NET 包装器 但在成功接受 AppKey 和 Token 后它总是返回 NULL 我确信 AppKey 和 Token 是正确的 因为当我故意输入错误的 AppKey Token 时 就会出现错误 我安
  • 如何在boto3中为AWS EC2实例设置标签

    我是新来的Boto3 并且想要创建 VPC 子网和一些 ec2 实例 基本架构是拥有一个 VPC 2 个不同可用区 us east 1a 和 b 内的 2 个子网 并应用一个允许SSH and ping 我的问题是如何指定其他选项对于每个资
  • Django - 用户 is_active

    这是我的用户身份验证方法 def user login request if request method POST username request POST get username password request POST get
  • C# 对由线程池处理的相关任务进行排队

    我想将需要按顺序处理的多个流中的相关任务 在每个流中 排队 这些流可以并行处理 具体来说 假设我需要两个队列 并且我希望每个队列中的任务按顺序处理 以下是示例伪代码 用于说明所需的行为 Queue1 WorkItem wi1a enqueu
  • 如何按整数值对哈希图进行排序[重复]

    这个问题在这里已经有答案了 HashMap
  • 为什么单个 Ajax 调用工作正常,但连续的 Ajax 调用失败?

    Setup 我有一个数据表 其每一行都是可单击的 单击一行时 将进行 ajax 调用并返回一些数据 有时 ajax 调用需要一点时间 具体取决于返回的数据量 一切正常 Problem 当逐行快速单击时 就会出现问题 简而言之 在上一个 aj
  • JAXB XML 适配器通过注释工作,但不通过 setAdapter

    我完全了解如何使用XML适配器 http download oracle com javase 6 docs api javax xml bind annotation adapters XmlAdapter html to 转换不可映射的
  • 使用 @Assisted 注入与多个相同类型的参数(@Named params)

    我的问题归结为使用 Assisted 和工厂的两个字符串参数 问题是 因为 Guice 将类型视为参数的识别机制 所以两个参数是相同的 并且我收到配置错误 一些代码 public class FilePathSolicitingDialog
  • 将 UIView 保持在 Circle Objective-C 内

    我怎样才能拥有我的颜色选择器 UIView 留在 300px 300px 的色轮内 我正在使用UIPanGestureRecognizer将颜色选择器拖动到色轮周围UIImageView 色轮的直径为300px 这是我的图像UIViewCo
  • 使用 SqlBulkCopy 插入 sql_variant 列时如何设置列类型

    我正在使用 SqlBulkCopy 从 net DataTable 对象插入 更新到包含 sql variant 列的 SQL Server 表 然而 当我需要的是 datetime2 时 SqlBulkCopy 坚持将放入该列的 Date
  • Devise 和 I18n - 重置密码路由问题

    我将 I18n 添加到使用 Devise 的 RoR 应用程序中 如果我尝试重置密码 现在会收到错误消息 错误是 Routing Error No route matches action gt edit controller gt dev
  • 如何从子活动中完成父活动

    我是 Android 开发新手 我创建了一个主 Activity gt A 它有 4 个按钮 4 个按钮之一是 EXIT 按钮 单击退出按钮后 我开始另一个活动 gt B 这将通过 A 活动的意图打开 B 活动 活动 B 包含 您想退出吗
  • 删除扰乱格式的特殊字符

    我目前正在创建一个聊天 似乎无法找到一种方法来阻止用户发布特殊字符 这些字符会扰乱聊天的格式并使最终用户退出聊天 我基本上是想完全删除它们 我知道我现在拥有的代码 从技术上讲 如果它有效 应该只能替换它们 但是我只是想让它首先工作 这是我用
  • 在ESC/POS命令中选择字符代码表

    我需要在打印收据上打印非英文字符 使用热敏 POS 收据打印机 Xprinter XP 58III 热敏 POS 收据打印机支持通用 ESC POS 命令 据我所知 这应该通过设置字符代码表来完成 就我而言 目标代码页是 21 用于设置代码
  • 从 Go 连接到 MySQL 的推荐方式是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可靠的解决方案来从 Go 连接到 MySQL 数据库 我见过一些库 但很难确定完整性和当前