Golang初始化MySQL数据库方法浅析

Golang初始化MySQL数据库方法浅析

在 Golang 开发中,MySQL 数据库广泛使用,因此如何初始化 MySQL 数据库是初学者需要掌握的重要知识点之一。本文将介绍两种常见的初始化 MySQL 数据库的方法。

方法一:使用 Golang 官方库实现

Golang 官方库提供了 database/sqlsql 等库,可以使用这些库来连接和操作 MySQL 数据库。

步骤

  1. 安装 github.com/go-sql-driver/mysql 库以支持 MySQL 数据库的连接操作。

    shell
    go get github.com/go-sql-driver/mysql

  2. 引入 database/sqlgithub.com/go-sql-driver/mysql 库。

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

  3. 初始化数据库连接,建议使用连接池避免频繁连接和断开。

    go
    func initDB() (db *sql.DB, err error) {
    dataSourceName := "user:password@tcp(ip:port)/database"
    db, err = sql.Open("mysql", dataSourceName)
    if err != nil {
    return nil, err
    }
    db.SetMaxOpenConns(20) // 最大连接数
    db.SetMaxIdleConns(5) // 最大空闲连接数
    if err = db.Ping(); err != nil {
    return nil, err
    }
    return
    }

示例

package main

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

func initDB() (db *sql.DB, err error) {
    dataSourceName := "root:123456@tcp(127.0.0.1:3306)/testdb"
    db, err = sql.Open("mysql", dataSourceName)
    if err != nil {
        return nil, err
    }
    db.SetMaxOpenConns(20)
    db.SetMaxIdleConns(5)
    if err = db.Ping(); err != nil {
        return nil, err
    }
    return
}

func main() {
    db, err := initDB()
    defer db.Close()  // 关闭连接
    if err != nil {
        panic(err)
    }

    // 查询测试
    rows, err := db.Query("SELECT * FROM user WHERE name = ?", "Tom")
    defer rows.Close()
    if err != nil {
        panic(err)
    }
    for rows.Next() {
        var id int
        var name string
        rows.Scan(&id, &name)
        fmt.Printf("id:%d, name:%s\n", id, name)
    }

    // 插入测试
    res, err := db.Exec("INSERT INTO user(name) VALUES(?)", "Jerry")
    if err != nil {
        panic(err)
    }
    fmt.Println(res.RowsAffected())
}

方法二:使用第三方库 gorm实现

gorm 是 Golang 中流行的 ORM 库,提供了非常方便且强大的操作数据库的方式。

步骤

  1. 安装 gorm 库以便使用。

    shell
    go get -u gorm.io/gorm
    go get -u gorm.io/driver/mysql

  2. 引入 gormgorm.io/driver/mysql 库。

    go
    import (
    "gorm.io/gorm"
    "gorm.io/driver/mysql"
    )

  3. 初始化连接。

    go
    func initDB() (*gorm.DB, error) {
    dataSourceName := "user:password@tcp(ip:port)/database"
    db, err := gorm.Open(mysql.Open(dataSourceName), &gorm.Config{})
    if err != nil {
    return nil, err
    }
    return db, nil
    }

示例

package main

import (
    "fmt"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

type User struct {
    ID   uint   `json:"id" gorm:"primary_key"`
    Name string `json:"name"`
}

func initDB() (*gorm.DB, error) {
    dataSourceName := "root:123456@tcp(127.0.0.1:3306)/testdb?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dataSourceName), &gorm.Config{})
    if err != nil {
        return nil, err
    }
    return db, nil
}

func main() {
    db, err := initDB()
    defer db.Close()  // 关闭连接
    if err != nil {
        panic(err)
    }

    // 查询测试
    var users []User
    db.Where("name = ?", "Tom").Find(&users)
    for _, user := range users {
        fmt.Printf("id:%d, name:%s\n", user.ID, user.Name)
    }

    // 插入测试
    user := User{Name: "Jerry"}
    db.Create(&user)
    fmt.Println(user.ID)
}

通过本文对 Golang 初始化 MySQL 数据库的方法分析,相信大家已经掌握了相关技术知识。在实际开发中,不同的场景需要灵活选择不同的方式进行实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Golang初始化MySQL数据库方法浅析 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • c# json字符串转换成json对象

    C#中JSON字符串转换成JSON对象 在C#中,可以使用Newtonsoft.Json库将JSON字符串转换成JSON对象。本文将提供一个完整攻略,介绍C#中字符串换成JSON对象的基础知识和使用方法,并提供两个示例说明。 基础知识 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易阅读和编写。它基于J…

    other 2023年5月8日
    00
  • 微信小程序页面间值传递的两种方法

    微信小程序页面间值传递的两种方法 微信小程序是一种轻量级的应用程序,它允许开发者创建具有独立功能的页面。在小程序中,有时需要在不同的页面之间传递数据。下面将介绍两种常用的方法来实现微信小程序页面间值传递。 方法一:通过URL参数传递值 这种方法适用于需要在页面跳转时传递少量数据的情况。具体步骤如下: 在源页面中,使用wx.navigateTo或wx.redi…

    other 2023年7月29日
    00
  • 设置高级NTFS权限的工具 XCACLS.vbs

    关于“设置高级NTFS权限的工具 XCACLS.vbs”的完整攻略,我们来分步骤说明: 1. 下载XCACLS.vbs工具 1.1 打开官方网站“Mark Russinovich’s Technical Blog”:https://docs.microsoft.com/en-us/sysinternals/downloads/xcacls。 1.2 点击“D…

    other 2023年6月27日
    00
  • C# 递归查找树状目录实现方法

    下面我将详细讲解“C# 递归查找树状目录实现方法”的完整攻略。 一、题目背景 在一个文件系统中,文件夹通常会分层,形成树状结构。我们需要编写一个程序,能够递归查找指定目录下的所有文件和子目录。 二、实现思路 实现该功能的主要思路是使用递归函数来遍历每个子目录,并查找每个子目录内的文件。 具体实现步骤如下: 定义一个递归函数,用来接收一个文件夹路径作为参数,然…

    other 2023年6月27日
    00
  • Windows7更新补丁KB4025341下载(附修复解决问题汇总) 32位/64位

    Windows 7 更新补丁 KB4025341 下载攻略 1. 简介 Windows 7 更新补丁 KB4025341 是为了修复系统中的一些问题和漏洞而发布的。本攻略将详细介绍如何下载和安装该补丁,并提供一些常见问题的解决方法。 2. 下载补丁 你可以按照以下步骤下载 Windows 7 更新补丁 KB4025341: 打开你的浏览器,访问 Micros…

    other 2023年7月28日
    00
  • SpringBoot中读取application.properties配置文件的方法

    在SpringBoot中,我们可以轻松地使用application.properties文件来配置应用程序的属性,比如数据库连接信息、端口号等等。下面是使用@Value和Environment两种方式读取application.properties文件的方法。 1. 使用@Value注解读取application.properties文件 使用@Value注…

    other 2023年6月25日
    00
  • python类静态变量

    以下是关于Python类静态变量的完整攻略,包括定义、使用和两个示例说明。 定义 在Python中,类静态变量是指在类定义中的变量,它们与类的实例无关,而是与类本身相关联。类静态变量可以在类的任何方法中使用也可以在类外使用。 在Python中,可以使用以下语法定义类静态变量: class MyClass: my_static_var = 42 在这个示例中,…

    other 2023年5月7日
    00
  • Swift语言中的一些访问控制设置详解

    Swift语言中的一些访问控制设置详解 什么是访问控制 在Swift语言中,有四个访问控制级别: open (最高访问权限,可以被任何实体访问) public (可以被任何模块访问) internal (只能在定义该实体的模块内部访问) fileprivate (只能在当前的Swift源文件内部访问) private (只能在定义该实体的作用域内访问) 我们…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部