linux

Go语言在Linux下的数据库操作技巧

小樊
35
2025-08-01 07:41:10
栏目: 编程语言

在Linux下使用Go语言进行数据库操作时,需要安装相应的数据库驱动,并使用Go的database/sql包进行数据库操作。以下是一些基本的操作技巧和示例代码:

安装数据库驱动

MySQL

在终端中运行以下命令来安装MySQL驱动:

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

PostgreSQL

在终端中运行以下命令来安装PostgreSQL驱动:

go get -u github.com/lib/pq

SQLite

在终端中运行以下命令来安装SQLite3驱动:

go get github.com/mattn/go-sqlite3

连接数据库

MySQL 连接示例

package main

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

func main() {
	// 数据库连接信息
	dsn := "user: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 MySQL database!")
}

PostgreSQL 连接示例

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/lib/pq"
)

func main() {
	// 数据库连接信息
	connStr := "host=localhost user=postgres password=secret dbname=mydb sslmode=disable"
	// 连接到数据库
	db, err := sql.Open("postgres", connStr)
	if err != nil {
		panic(err)
	}
	defer db.Close()
	// 测试数据库连接
	err = db.Ping()
	if err != nil {
		panic(err)
	}
	fmt.Println("Connected to the PostgreSQL database!")
}

SQLite 连接示例

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/mattn/go-sqlite3"
)

func main() {
	// 连接数据库
	db, err := sql.Open("sqlite3", "./example.db")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()
	// 测试数据库连接
	err = db.Ping()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Connected to the SQLite database!")
}

基本操作

查询单行数据(QueryRow)

var name string
err := db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)
if err != nil {
	log.Fatal(err)
}
fmt.Println("用户名:", name)

查询多行数据(Query)

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

for rows.Next() {
	var id int
	var name string
	rows.Scan(&id, &name)
	fmt.Println(id, name)
}

插入数据(Exec)

result, err := db.Exec("INSERT INTO users(name, age) VALUES(?, ?)", "Alice", 25)
id, _ := result.LastInsertId()
fmt.Println("新插入用户ID:", id)

更新与删除

// 更新
_, err = db.Exec("UPDATE users SET age=? WHERE id=?", 30, 1)

// 删除
_, err = db.Exec("DELETE FROM users WHERE id=?", 1)

使用预处理语句(Prepare)

stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")

以上是在Linux下使用Go语言进行数据库操作的一些基本技巧和示例代码。根据具体的数据库类型和需求,可以选择相应的驱动并进行相应的操作。

0
看了该问题的人还看了