杀鸡焉用牛刀 发表于 2024-9-9 00:01:30

go语言操纵 PostgreSQL 数据库

1. Go 的 PostgreSQL 驱动程序

使用go get命令来安装
go get github.com/lib/pq
PostgreSQL 数据库凭据:确保要连接的 PostgreSQL 数据库的地点、端口、用户名和密码
2. 导入须要的包

首先,在 Go 代码中导入所需的包,包罗 PostgreSQL 驱动程序和其他须要的库。
import (
    "database/sql"
    "fmt"
    _ "github.com/lib/pq"
)
3. 创建数据库连接

使用以下代码创建一个与 PostgreSQL 数据库的连接:
db, err := sql.Open("postgres", "user=username password=password dbname=database_name sslmode=disable")
if err != nil {
    panic(err.Error())
}
defer db.Close()
确保将user、password、database_name等参数替换为本身的 PostgreSQL 数据库的凭据和名称。
4.实行 CRUD 操纵

现在,我们已经建立了与 PostgreSQL 数据库的连接,让我们继承实行 CRUD 操纵。
1)创建记录

要创建新的记录,使用以下代码:
_, err := db.Exec("INSERT INTO user (username, email) VALUES ($1, $2)", "john_doe", "john@example.com")
if err != nil {
    panic(err.Error())
}
2)读取记录

要读取记录,使用以下代码:
rows, err := db.Query("SELECT username, email FROM user")
if err != nil {
    panic(err.Error())
}
defer rows.Close()

for rows.Next() {
    var username string
    var email string
    err := rows.Scan(&username, &email)
    if err != nil {
      panic(err.Error())
    }
    fmt.Printf("Username: %s, Email: %s\n", username, email)
}
注:rows.Next() 返回true 或 flase,通过返回值判断表中数据进行curd操纵
3)更新记录

要更新记录,使用以下代码:
_, err := db.Exec("UPDATE user SET email = $1 WHERE username = $2", "new_email@example.com", "john_doe")
if err != nil {
    panic(err.Error())
}
4)删除记录

要删除记录,使用以下代码:
_, err := db.Exec("DELETE FROM user WHERE username = $1", "john_doe")
if err != nil {
    panic(err.Error())
}
5.简单示例

以下是一个简单的示例,演示如何创建、读取、更新和删除用户记录:
package mainimport (
    "database/sql"
    "fmt"
    _ "github.com/lib/pq"
)
func main() {    db, err := sql.Open("postgres", "user=username password=password dbname=database_name sslmode=disable")    if err != nil {      panic(err.Error())    }    defer db.Close()    // 创建记录    _, err = db.Exec("INSERT INTO user (username, email) VALUES ($1, $2)", "john_doe", "john@example.com")    if err != nil {      panic(err.Error())    }    // 读取记录    rows, err := db.Query("SELECT username, email FROM user")    if err != nil {      panic(err.Error())    }    defer rows.Close()    for rows.Next() {      var username string      var email string      err := rows.Scan(&username, &email)      if err != nil {            panic(err.Error())      }      fmt.Printf("Username: %s, Email: %s\n", username, email)    }    // 更新记录    _, err = db.Exec("UPDATE user SET email = $1 WHERE username = $2", "new_email@example.com", "john_doe")    if err != nil {      panic(err.Error())    }    // 删除记录    _, err = db.Exec("DELETE FROM user WHERE username = $1", "john_doe")    if err != nil {      panic(err.Error())    }}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: go语言操纵 PostgreSQL 数据库