Golang初始化MySQL数据库方法浅析
在 Golang 开发中,MySQL 数据库广泛使用,因此如何初始化 MySQL 数据库是初学者需要掌握的重要知识点之一。本文将介绍两种常见的初始化 MySQL 数据库的方法。
方法一:使用 Golang 官方库实现
Golang 官方库提供了 database/sql
和 sql
等库,可以使用这些库来连接和操作 MySQL 数据库。
步骤
-
安装
github.com/go-sql-driver/mysql
库以支持 MySQL 数据库的连接操作。shell
go get github.com/go-sql-driver/mysql -
引入
database/sql
和github.com/go-sql-driver/mysql
库。go
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
) -
初始化数据库连接,建议使用连接池避免频繁连接和断开。
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 库,提供了非常方便且强大的操作数据库的方式。
步骤
-
安装
gorm
库以便使用。shell
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql -
引入
gorm
和gorm.io/driver/mysql
库。go
import (
"gorm.io/gorm"
"gorm.io/driver/mysql"
) -
初始化连接。
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技术站