Avatar ·

从Go连接MySQL的推荐方式:驱动、连接池与最佳实践

大家好!我是一名Go新手开发者,从Python转过来,之前在Python中用SQLAlchemy一切都很简单。现在我正在用Go(纯net/http)写一个小型REST API,需要连接MySQL。

我读了几篇教程,但它们互相矛盾。有人用go-sql-driver/mysql,有人直接用database/sql,还有人推荐GORM这样的ORM。我完全搞糊涂了。

下面是我目前写的代码示例,但看起来像是临时拼凑的:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // 这里我不明白:是否需要调用db.Ping()?
    // 是否需要配置连接池?
    // 如何正确处理错误?

    rows, err := db.Query("SELECT id, name FROM users")
    if err != nil {