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日

相关文章

  • JavaScript中常见的七种继承及实现

    当需要创建新的对象时,继承是一个必须考虑的问题。JavaScript中的继承方式花样繁多,以下是常见的7种继承方式。 1.原型链继承 将父类的实例作为子类的原型,实现继承,示例代码如下: function Parent() { this.name = ‘parent’; } Parent.prototype.getName = function() { re…

    other 2023年6月26日
    00
  • window.onload的页面加载技巧

    当我们打开一个网页的时候,浏览器会依次加载 HTML、CSS、JavaScript等资源,而 window.onload 事件会在所有资源都加载完成后才会触发。所以通过 window.onload 来执行 JavaScript 操作可以保证页面中的所有元素都已经加载完成,从而避免因为元素还未加载完毕而出现错误的情况。 下面就是 window.onload 页…

    other 2023年6月25日
    00
  • 关于加快微信小程序开发的一些小建议

    关于加快微信小程序开发的一些小建议,其实可以分为以下几个方面: 1.选择适合的开发框架 微信小程序提供了两种基于不同语言的框架,分别是基于JavaScript的框架和基于WXML、WXSS等前端技术的框架。根据自身的情况和开发需求选择合适的框架是非常重要的。其中,基于JavaScript的框架更适合已经熟悉前端开发的工程师,而基于WXML、WXSS等前端技术…

    other 2023年6月26日
    00
  • Qt模仿Visual Studio停靠窗口效果

    下面我将详细讲解“Qt模仿Visual Studio停靠窗口效果”的完整攻略,该攻略分为三个步骤: 1.准备工作: 首先,我们需要在Qt环境中导入QDockWidget这个类,它是一个停靠窗口控件,常用于实现像Visual Studio一样的停靠窗口效果。我们可以把QDockWidget放到QMainWindow中的QLayout中,让它可以内嵌在主窗口之中…

    other 2023年6月26日
    00
  • 巫师3狂猎N卡跳出及未响应的快速解决方法_巫师3跳出怎么办

    巫师3狂猎N卡跳出及未响应的快速解决方法 如果你在玩《巫师3狂猎》,遇到了游戏跳出游戏或无响应的情况,可能会很让人苦恼。但不要担心,本文将提供几种解决方法,帮助你快速解决这些问题。 问题1:游戏跳出 解决方法: 步骤1:打开游戏安装目录,找到“user.settings”文件 步骤2:打开“user.settings”文件,找到[Display]选项。 步骤…

    other 2023年6月27日
    00
  • Java中线程Thread的三种方式和对比

    Java中线程Thread的三种方式和对比攻略 Java中线程Thread的方式可以大致分为三类,分别是继承Thread类、实现Runnable接口和使用Callable和Future接口配合使用。下面将一一介绍它们的特点和使用场景。 继承Thread类 继承Thread类是最简单直接的创建线程的方式,只需要创建一个类继承Thread类并重写run()方法即…

    other 2023年6月27日
    00
  • Win11怎么自定义设置开始菜单? 打造创意的Windows11开始菜单的技巧

    下面是关于Win11自定义设置开始菜单的完整攻略以及打造创意的Windows11开始菜单的技巧。 一、Win11怎么自定义设置开始菜单? 在Win11中,自定义设置开始菜单有以下几个步骤: 打开“设置”,点击“个性化”菜单,在左侧菜单栏中选择“开始菜单”。 在“开始菜单”菜单中,可以通过勾选或取消勾选相应的选项来自定义开始菜单,如:启用类似全屏开始菜单、在磁…

    other 2023年6月25日
    00
  • MySQL如何修改字段的默认值和空值

    若想更新 MySQL 表中的默认值或允许空值,可以通过修改表结构的方式实现。下面是修改 MySQL 表的默认值和空值的完整攻略: 查看表结构 在进行修改之前,我们首先需要查看该表的结构、字段和属性信息。可以使用以下命令查看表结构: DESC `table_name`; 需要替换 table_name 为你需要查看表结构的表名。 修改字段默认值 如果需要修改表…

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