go语言操纵 PostgreSQL 数据库

打印 上一主题 下一主题

主题 2038|帖子 2038|积分 6114

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. Go 的 PostgreSQL 驱动程序

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

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

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

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

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

要读取记录,使用以下代码:
  1. rows, err := db.Query("SELECT username, email FROM user")
  2. if err != nil {
  3.     panic(err.Error())
  4. }
  5. defer rows.Close()
  6. for rows.Next() {
  7.     var username string
  8.     var email string
  9.     err := rows.Scan(&username, &email)
  10.     if err != nil {
  11.         panic(err.Error())
  12.     }
  13.     fmt.Printf("Username: %s, Email: %s\n", username, email)
  14. }
复制代码
注:rows.Next() 返回true 或 flase,通过返回值判断表中数据进行curd操纵
3)更新记录

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

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

以下是一个简单的示例,演示如何创建、读取、更新和删除用户记录:
  1. package mainimport (
  2.     "database/sql"
  3.     "fmt"
  4.     _ "github.com/lib/pq"
  5. )
  6. 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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表