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日

相关文章