- database/sql – 內建無需額外安裝
- github.com/jmoiron/sqlx – 是
database/sql
超集,增加了 scan 內容到struct
- gorm.io/gorm – 全功能ORM , 和java的一些 orm 類似。 可以設定 關聯 等。
本篇文章介紹:database/sql。 它是golang 內建的,只提供一個sql操作的統一接口。不過要連結mysql需要安裝 mysql 的實現。
安裝需要的包:
go get -u github.com/go-sql-driver/mysql
程序中必須加載2個包:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
database/sql
包 是golang官方提供的一個接口。 github.com/go-sql-driver/mysql
包 mysql 的對接口的實現。
_ "github.com/go-sql-driver/mysql"
表示只加载 “github.com/go-sql-driver/mysql” 包的 init。然后统一有 标准的 database/sql
调用。
連結Mysql:
db, err := sql.Open("mysql", "root:xxx@/test_db?charset=utf8mb4")
if err != nil {
panic(err)
}
defer db.Close()
defer db.Close()
当程序结束时,执行关闭mysql连接。
查詢&處理數據:
rows, err := db.Query("SELECT id, area FROM zip limit 3")
defer rows.Close()
for rows.Next() {
var id int
var area string
if err := rows.Scan(&id, &area); err != nil {
panic(err)
}
fmt.Printf("%d \t %s\n", id, area)
}
必须通过 rows.Scan()
读取到对应变量