使用 Golang 连接 PostgreSQL 15 并解析参数

本文将演示如何使用 Golang 连接 PostgreSQL 15 数据库,并使用 github.com/spf13/cobra 包解析命令行参数,以实现更灵活的配置方式。

示例代码:

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/lib/pq"
    "github.com/spf13/cobra"
)

var (
    user     string
    password string
    host     string
    database string
)

func main() {
    var rootCmd = &cobra.Command{
        Use:   "postgres-test",
        Short: "Test PostgreSQL connectivity",
        Run: func(cmd *cobra.Command, args []string) {
            connectionString := fmt.Sprintf("user=%s password=%s host=%s dbname=%s sslmode=disable", user, password, host, database)
            db, err := sql.Open("postgres", connectionString)
            if err != nil {
                log.Fatal(err)
            }
            defer db.Close()

            err = db.Ping()
            if err != nil {
                log.Fatal(err)
            }

            fmt.Println("Successfully connected to PostgreSQL database!")
        },
    }

    rootCmd.PersistentFlags().StringVarP(&user, "user", "u", "root", "Username")
    rootCmd.PersistentFlags().StringVarP(&password, "password", "p", "", "Password")
    rootCmd.PersistentFlags().StringVarP(&host, "host", "H", "192.168.1.100:5432", "Host address")
    rootCmd.PersistentFlags().StringVarP(&database, "database", "d", "test", "Database name")

    if err := rootCmd.Execute(); err != nil {
        log.Fatal(err)
    }
}

解析参数:

使用 Cobra 包解析参数,我们可以通过命令行传递不同的连接信息:

./postgres-test --user=root --password=KXGNEYpkyxuXXfRB --host=192.168.1.100:5432 --database=test

代码说明:

  1. 导入必要的包:

    • database/sql:用于连接数据库
    • fmt:用于格式化字符串
    • log:用于记录错误信息
    • github.com/lib/pq:PostgreSQL 驱动程序
    • github.com/spf13/cobra:用于解析命令行参数
  2. 定义全局变量:

    • user:用户名
    • password:密码
    • host:数据库地址
    • database:数据库名称
  3. 创建 Cobra 命令:

    • rootCmd:主命令,用于定义应用程序的名称、简短描述和运行逻辑。
    • Run 函数:用于执行连接测试,包括建立连接、Ping 数据库和输出连接结果。
  4. 定义命令行参数:

    • rootCmd.PersistentFlags().StringVarP(...):使用 Cobra 的 PersistentFlags() 方法定义参数,并设置参数的名称、缩写、默认值和描述。
  5. 执行命令:

    • rootCmd.Execute():执行命令,并解析命令行参数。

注意:

  • 请将 KXGNEYpkyxuXXfRB 替换为您的实际密码。
  • 代码中的 sslmode=disable 表示禁用 SSL 连接。根据您的实际情况调整此设置。
  • 请确保您的系统已安装 libpq 包。

希望本指南能够帮助您使用 Golang 连接 PostgreSQL 15 数据库,并使用 Cobra 包解析命令行参数。

Golang 连接 PostgreSQL 15 - 使用 Cobra 包解析参数

原文地址: https://www.cveoy.top/t/topic/nheQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录