• golang的mysql数据库连接


    一、安装

    使用 shell 中的 go 工具将软件包安装到自己的GOPATH

    $ go get -u github.com/go-sql-driver/mysql

    确保 Git 已安装在自己的机器和系统的 .PATH

    二、用法

    Go MySQL Driver是Go接口的实现。只需要导入驱动程序,然后就可以使用完整的数据库 API。

    使用 as 和有效的 DSN 作为 :数据源名称

    最完整的DSN:

    username:password@protocol(address)/dbname?param=valueq

    其中密码可以包含任何字符,无需转义。

    除数据库名称外,所有值都是可选的。因此,最小DSN是:

    /dbname
    

    如果不想预先选择数据库,请留空:dbname

    /
    

    这与空 DSN 字符串具有相同的效果

    需要注意的是:参数区分大小写!

    任何 、 或 都被接受代表真正的布尔值。毫不奇怪,false 可以指定为: 、 、 或 .trueTRUETrue1falseFALSEFalse0

    代码示例: 

    1. import (
    2. "database/sql"
    3. "time"
    4. _ "github.com/go-sql-driver/mysql"
    5. )
    6. db, err := sql.Open("mysql", "user:password@/dbname")
    7. if err != nil {
    8. panic(err)
    9. }

    方法介绍:

    db.SetConnMaxLifetime()

    是确保在MySQL服务器,操作系统或其他中间件关闭连接之前,驱动程序安全地关闭连接所必需的。由于某些中间件将空闲连接关闭 5 分钟,因此我们建议将超时时间短于 5 分钟。此设置还有助于负载平衡和更改系统变量。

    db.SetMaxOpenConns()

    强烈建议限制应用程序使用的连接数。没有建议的限制数量,因为它取决于应用程序和MySQL服务器。

    db.SetMaxIdleConns()

    建议设置为 相同(或大于)。当它小于 时,可以比您预期的非常频繁地打开和关闭连接。空闲连接可以通过 关闭。

    db.Ping()

    是进行连接。

    三、数据库连接实例:

    1. package main
    2. import (
    3. "database/sql"
    4. "fmt"
    5. _ "github.com/go-sql-driver/mysql"
    6. )
    7. //定义一个全局对象db
    8. var db *sql.DB
    9. func initDB() (err error) {
    10. dsn:="root:123456@tcp(127.0.0.1:3306)/go?charset=utf8mb4&parseTime=True"
    11. //注意这里不能用:=,我们是给全局变量赋值,然后在main函数中使用全局变量db
    12. db,err=sql.Open("mysql",dsn)
    13. if err!=nil {
    14. return err
    15. }
    16. //尝试与数据库建立链接(校验dsn是否正确)
    17. err=db.Ping()
    18. if err!=nil {
    19. return err
    20. }
    21. return nil
    22. }
    23. func main() {
    24. fmt.Println("hellp")
    25. err := initDB()
    26. if err!=nil {
    27. fmt.Println(err)
    28. }else {
    29. fmt.Println("连接成功!")
    30. }
    31. }

  • 相关阅读:
    计算机基础之虚拟内存概述
    day07-缓存套餐
    【设计模式】原型模式
    整理自己平时用到的【快捷键】
    开放与融合趋势下,工业互联网安全破圈之道
    圣普伦数字项目管理大师课:3重核心技能,2个月学会,这波很值
    3.18 最大单词长度——力扣
    Java开发 - 你不知道的JVM优化详解
    代码随想录算法训练营day57 | LeetCode 647. 回文子串 516. 最长回文子序列
    ESP8266-Arduino编程实例-LSM303 3D加速度计/磁力计驱动
  • 原文地址:https://blog.csdn.net/m0_51530927/article/details/126180043