golang 中集成 postgresql 数据库安装:安装 postgresql 驱动、postgresql 数据库和 golang。创建连接池:管理与数据库的连接。执行查询:使用 db.query 方法执行查询。执行更新:使用 db.exec 方法执行更新(插入、更新、删除)。实战案例:使用 rest api 创建资产,并将其存储到 postgresql 数据库中。
Golang 框架如何集成 PostgreSQL 数据库
PostgreSQL 是一款功能强大的开源关系型数据库管理系统,以其可靠性和可扩展性而闻名。在 Golang 中集成 PostgreSQL 可以帮助你轻松地管理数据库连接、查询和数据操作。
先决条件
- 安装和配置 PostgreSQL 数据库
- 安装 Golang 1.18 或更高版本
安装 PostgreSQL 驱动
首先,你需要安装 PostgreSQL 驱动程序以连接到数据库:
$ go get -u github.com/jackc/pgx/v4
登录后复制
创建连接池
接下来,创建一个连接池以管理与数据库的连接。连接池可以提高性能并减少创建和销毁连接的开销:
import ( "context" "database/sql" "fmt" "log" "time" "github.com/jackc/pgx/v4" "github.com/jackc/pgx/v4/stdlib" ) var db *sql.DB func initDB() { connectionString := fmt.Sprintf("user=root password=mysecret dbname=mydatabase host=localhost port=5432") pool, err := pgx.ParseConfig(connectionString) if err != nil { log.Fatalf("unable to parse connection string: %v", err) } pool.MaxConnections = 10 // 根据需要调整最大连接数 pool.MaxConnLifetime = 5 * time.Minute db = stdlib.OpenDB(*pool) if err := db.Ping(context.Background()); err != nil { log.Fatalf("unable to connect to database: %v", err) } }
登录后复制
执行查询
要执行查询,可以使用 db.Query 方法:
func queryAssets() ([]*Asset, error) { rows, err := db.Query("SELECT * FROM assets") if err != nil { return nil, fmt.Errorf("query failed: %v", err) } defer rows.Close() var assets []*Asset for rows.Next() { var asset Asset if err := rows.Scan(&asset.ID, &asset.Name); err != nil { return nil, fmt.Errorf("scan failed: %v", err) } assets = append(assets, &asset) } return assets, nil }
登录后复制
执行更新
要执行更新(例如插入、更新或删除),可以使用 db.Exec 方法:
func insertAsset(asset Asset) (int64, error) { result, err := db.Exec("INSERT INTO assets (name) VALUES (?)", asset.Name) if err != nil { return 0, fmt.Errorf("insert failed: %v", err) } return result.RowsAffected(), nil }
登录后复制
实战案例
考虑一个示例应用程序,其中我们要将用户提交的数据存储到 PostgreSQL 数据库中:
package main import ( "encoding/json" "fmt" "log" "net/http" "github.com/gorilla/mux" ) type Asset struct { ID int `json:"id"` Name string `json:"name"` } func main() { // 初始化数据库连接池 initDB() r := mux.NewRouter() r.HandleFunc("/assets", createAsset).Methods("POST") log.Fatal(http.ListenAndServe(":8080", r)) } func createAsset(w http.ResponseWriter, r *http.Request) { var asset Asset if err := json.NewDecoder(r.Body).Decode(&asset); err != nil { http.Error(w, "Invalid request body", http.StatusBadRequest) return } id, err := insertAsset(asset) if err != nil { http.Error(w, "Failed to create asset", http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(map[string]int64{"id": id}) }
登录后复制
这个应用程序允许用户通过一个 REST API 端点创建新资产,并将数据存储在 PostgreSQL 数据库中。
以上就是Golang框架如何集成PostgreSQL数据库?的详细内容,更多请关注叮当号网其它相关文章!
文章来自互联网,只做分享使用。发布者:周斌,转转请注明出处:https://www.dingdanghao.com/article/709679.html