从Go连接到MySQL的推荐方法是什么?

从Go连接到MySQL的推荐方法是什么?,第1张

从Go连接到MySQL的推荐方法是什么?

有一些驱动程序可用,但您应仅考虑将实现数据库/ sql API的驱动程序视为

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

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

  • MyMySQL的
  • Go-MySQL驱动程序

我在生产中都使用了它们,程序运行了几个月,连接数以百万计没有失败。

其他SQL数据库驱动程序在go-wiki上列出。

使用MyMySQL时导入:

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

使用Go-MySQL-Driver导入:

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

使用MyMySQL连接和关闭:

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 { }items := make([]*SomeStruct, 0, 10)var ida, idb uintfor rows.Next() {    err = rows.Scan(&ida, &idb)    if err != nil { }    items = append(items, &SomeStruct{ida, idb})}

插 :

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

您会看到在Go中使用MySQL是一种令人愉快的体验:我 从来没有
遇到问题,我的服务器运行了数月之久没有出现错误或泄漏。大多数函数仅采用可变数量的参数这一事实减轻了一项任务,这在许多语言中都是乏味的。

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5012993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存