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

yizhihongxing

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日

相关文章

  • vant中的toast层级改变操作

    Vant中的Toast层级改变操作攻略 简介 Toast(提示框)是Vant中常用的组件之一,可以用来显示短暂的提示信息。在某些情况下,我们可能需要调整Toast的层级,以确保它在其他浮动元素之上或之下显示。本攻略将详细介绍在Vant中如何改变Toast的层级。 步骤 步骤一:导入Toast组件 首先,确保在代码中正确导入Toast组件,可以使用如下代码进行…

    other 2023年6月28日
    00
  • spring中开启事务的方式有哪些

    以下是关于“Spring中开启事务的方式有哪些”的完整攻略,过程中包含两个示例。 背景 在Spring开发中,事务管理是非常重要的一部分。Spring提供了多种方式来开启事务,本攻略将介绍Spring中开启事务的方式。 基本原理 Spring中开启事务的方式有多种,包括XML配置、注解方式、编程式事务管理等。具体步骤如下: 配置事务管理器。 开启事务。 执行…

    other 2023年5月9日
    00
  • 详解C语言的基本数据类型

    详解C语言的基本数据类型 C语言是一种强类型语言,对不同类型的数据有着严格的定义和规定。在C语言中,常用的基本数据类型包括整型、字符型、浮点型和布尔型等。本攻略将详解这些基本数据类型。 整型 整型是指不带小数部分的数字。在C语言中,整型数据类型包括 char、short、int、long 和 long long 等。不同类型的整型在存储大小、取值范围等方面有…

    other 2023年6月27日
    00
  • unity8个入门代码

    Unity 8个入门代码完整攻略 Unity是一款跨平台的游戏引擎,它可以用于开发2D和3D游戏。本攻略将详细介绍Unity的8入门代码,包括基本概念、代码示例和事项。 基本概念 Unity是一款跨平台的游戏引擎,它可以用于开发2D和3D游戏。Unity使用C#语言编写代码,可以通过编写代码来实现游戏的各种功能。在Unity中,我们可以使用8个入门代码来快速…

    other 2023年5月6日
    00
  • 使用vue制作fullpage页面滚动效果

    使用Vue制作Fullpage页面滚动效果攻略 Fullpage页面滚动效果是指在一个页面中,通过滚动鼠标或手指来切换不同的页面内容,从而实现一种流畅的全屏滚动效果。本文将介绍如何使用Vue制作Fullpage页面滚动效果的完整攻略,包括安装插件、配置路、编写组件等内容。 步骤1:安装插件 要使用Vue制作Fullpage页面滚动效果,我们需要安装一个名vu…

    other 2023年5月8日
    00
  • ios的collection控件的自定义布局实现与设计

    ios的collection控件是一种在iOS应用中广泛使用的UI界面组件,可以用于展示各种类型的数据,如图片、文字、视频等。自定义布局实现与设计是指开发者可以通过编写代码实现对collection控件的样式、布局、交互等方面进行自定义,以满足特定的需求。 以下是自定义布局实现与设计的完整攻略: 第一步:创建自定义布局类 创建一个新的继承自UICollect…

    other 2023年6月25日
    00
  • Go语言学习教程之声明语法(译)

    Go语言学习教程之声明语法(译)攻略 介绍 本攻略将详细讲解Go语言学习教程中的声明语法部分。声明语法是Go语言中非常重要的一部分,它用于定义变量、常量、函数和类型等。 变量声明 在Go语言中,可以使用关键字var来声明一个变量。变量声明的一般语法如下: var 变量名 类型 示例1:声明一个整数变量num并赋值为10。 var num int num = …

    other 2023年8月16日
    00
  • Python中关键字global和nonlocal的区别详解

    Python中关键字global和nonlocal的区别详解 在Python中,global和nonlocal是两个关键字,用于在函数内部访问和修改外部作用域的变量。它们的使用方式和作用范围有所不同,下面将详细解释它们的区别。 global关键字 global关键字用于在函数内部声明一个变量为全局变量,使得该变量可以在函数内外进行访问和修改。具体使用方式如下…

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