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 stringvar email stringerr := 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 stringvar email stringerr := 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())}
}