在go语言中使用PostgreSQL实现一个简单的CRUD示例

2023-06-01 00:00:00 语言 示例 简单

Go是一种日益流行的Web应用程序编程语言,具有用于数据存储和操作的库,使开发快速可靠。

PostgreSQL 是一种开源、符合 ACID 的关系数据库系统,非常适合需要以复杂结构存储数据的应用程序。它们一起形成了一个强大的组合。


进入步骤:

设置您的环境

在创建应用程序之前,您需要设置环境。首先,您需要安装 Go 和 PostgreSQL。

为此,您需要按照我们的帖子如何为您的特定系统安装 Go 和 PostgreSQL 中的说明进行操作。


接下来,您需要安装一个用于使用 PostgreSQL 的库。

对于本指南,我们使用github.com/lib/pq. 

您可以使用命令轻松安装它go get。

go get -u github.com/lib/pq


定义数据库结构

一旦您的环境设置完毕,就可以为您的应用程序定义数据库结构了。

PostgreSQL 允许您使用 SQL 语句来定义数据库,因此对于本示例,您将创建一个表来存储用户信息。

CREATE TABLE User (
    id SERIAL PRIMARY KEY,
    username TEXT NOT NULL,
    password TEXT NOT NULL
);

该id列将是主键并将自动生成。

和字段是必需的,因此username在表定义中设置。

这个简单的表将存储您的应用程序需要的所有用户信息。passwordNOT NULL


建立数据库连接

在使用数据库之前,您需要建立连接。

为此,您将使用库sql.Open()中的函数github.com/lib/pq并传入连接字符串。

db, err := sql.Open("postgres", "postgres://user:[email protected]/db_name?sslmode=disable")
if err != nil {
    log.Fatal(err)
}
defer db.Close()

这将建立与数据库的连接并将其存储在db变量中。

该defer语句将确保连接在程序完成执行时正确关闭。


创建用户

现在您已经建立了与数据库的有效连接,您可以开始编写与其交互的代码。

要创建新用户,您可以使用INSERT INTOSQL 语句和库Exec()中的函数github.com/lib/pq。

query := "INSERT INTO User(username, password) VALUES($1, $2)"
_, err := db.Exec(query, "example_user", "example_password")
if err != nil {
    log.Fatal(err)
}

此代码将使用用户名example_user和密码插入一个新用户example_password。

您可以将这些替换为您自己的值以创建不同的用户。


检索用户

创建用户后,您可以使用SELECTSQL 语句和库QueryRow()中的函数再次检索它github.com/lib/pq。

query := "SELECT * FROM User WHERE username = $1"
user := &User{}
err := db.QueryRow(query, "example_user").Scan(&user.id, &user.username, &user.password)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("%+v\n", user)

上面的代码将使用 username 检索用户example_user。

它将用户存储在user变量中并将其打印到控制台。


更新用户

拥有用户后,您可以使用UPDATESQL 语句和库Exec()中的函数更新它github.com/lib/pq。

query := "UPDATE User SET password = $1 WHERE username = $2"
_, err := db.Exec(query, "new_example_password", "example_user")
if err != nil {
    log.Fatal(err)
}

此代码将使用用户名更新用户example_user并将其密码替换为new_example_password.


删除用户

DELETE最后,您可以使用SQL 语句和库Exec()中的函数删除用户github.com/lib/pq。

query := "DELETE FROM User WHERE username = $1"
_, err := db.Exec(query, "example_user")
if err != nil {
    log.Fatal(err)
}

此代码将删除用户名为 username 的用户example_user。


总结

上文实现了如何设置环境、定义数据库、建立连接、创建、检索、更新和删除用户。

相关文章