商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > golang在ubuntu上的数据库连接方法

golang在ubuntu上的数据库连接方法

  发布于2026-07-16 阅读(0)

扫一扫,手机访问

在Ubuntu环境下用Go语言连接数据库,这事儿说简单也简单,但不少新手容易在驱动选择和连接参数上卡壳。下面就把完整流程和关键细节拆开来讲,省得大家走弯路。

golang在ubuntu上的数据库连接方法

整体来看,步骤其实很清晰:先安装对应数据库的Go驱动,然后在代码里导入驱动包、配置连接信息(地址、端口、用户名、密码等),接着建立连接、执行SQL,最后别忘了关闭连接。每一步都有讲究,咱们以最常见的MySQL为例,一步步说清楚。

准备工作:安装MySQL驱动

Go语言本身不提供数据库驱动,需要第三方实现。对于MySQL,社区最常用的是go-sql-driver/mysql。直接执行以下命令即可安装:

go get -u github.com/go-sql-driver/mysql

这条命令会把驱动下载到你的Go模块缓存里,之后在代码中导入就能用。如果你用的是PostgreSQL或SQLite,对应驱动分别是lib/pqmattn/go-sqlite3,操作逻辑类似。

编写Go代码:建立连接与查询

下面是一个完整的示例,从导入包到执行查询,每一步都标清楚了:

package main

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

func main() {
    // 配置数据库连接信息
    dsn := "username:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"

    // 建立数据库连接
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 检查数据库连接是否成功
    err = db.Ping()
    if err != nil {
        panic(err)
    }
    fmt.Println("Connected to the database!")

    // 执行SQL语句
    var name string
    err = db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)
    if err != nil {
        panic(err)
    }
    fmt.Printf("User with ID 1: %s\n", name)
}

注意几个关键点:

  • DSN字符串里要有parseTime=True,否则时间类型字段会解析成字符串;charset=utf8mb4支持emoji等特殊字符。
  • 代码中的usernamepasswordlocalhost3306dbname需要替换成你自己的数据库信息。
  • sql.Open只是初始化连接池,并不会真正建立连接;真正的连接是在第一次查询(比如PingQueryRow)时才建立的。
  • 使用defer db.Close()确保程序退出前释放资源。

运行程序

将上述代码保存为main.go,然后在终端执行:

go run main.go

如果一切正常,你会看到输出:Connected to the database! 以及查询到的用户名。

至于其他数据库(PostgreSQL、SQLite等),流程完全一致:安装对应的驱动包,修改导入路径和DSN格式即可。例如PostgreSQL的驱动是github.com/lib/pq,DSN格式为host=localhost port=5432 user=username password=password dbname=dbname sslmode=disable。SQLite则不需要网络连接,DSN直接是文件路径。

说到底,Go连接数据库的核心就两点:选对驱动、写对DSN。只要这两步不出错,后面的操作就和操作database/sql标准接口一样丝滑了。

本文转载于:https://www.yisu.com/ask/68365636.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注