使用 Golang 和 Cobra 连接 PostgreSQL 15 数据库

本文将展示如何使用 Golang 和 Cobra 包连接到 PostgreSQL 15 数据库,并通过命令行参数传递用户名、密码、地址和数据库名称。

代码:

package main

import (
	"database/sql"
	"fmt"
	"os"

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

var (
	username string
	password string
	host     string
	dbname   string
)

func main() {
	rootCmd := &cobra.Command{
		Use:   "app",
		Short: "连接到 PostgreSQL 数据库",
		Long:  "连接到 PostgreSQL 数据库,并通过命令行参数传递连接信息。",
		Run: func(cmd *cobra.Command, args []string) {
			connStr := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable", username, password, host, dbname)
			db, err := sql.Open("postgres", connStr)
			if err != nil {
				fmt.Fprintf(os.Stderr, "Failed to connect to database: %v\n", err)
				os.Exit(1)
			}
			defer db.Close()

			// Do something with the database connection
			// ...
		},
	}

	rootCmd.Flags().StringVarP(&username, "username", "u", "", "Database username")
	rootCmd.Flags().StringVarP(&password, "password", "p", "", "Database password")
	rootCmd.Flags().StringVarP(&host, "host", "H", "", "Database host (e.g. localhost:5432)")
	rootCmd.Flags().StringVarP(&dbname, "dbname", "d", "", "Database name")

	rootCmd.MarkFlagRequired("username")
	rootCmd.MarkFlagRequired("password")
	rootCmd.MarkFlagRequired("host")
	rootCmd.MarkFlagRequired("dbname")

	if err := rootCmd.Execute(); err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	}
}

运行程序:

go run main.go --username=root --password=KXGNEYpkyxuXXfRB --host=192.168.1.100:5432 --dbname=test

解释:

  1. 导入必要的包:database/sql 用于连接数据库,fmt 用于格式化输出,os 用于操作系统,github.com/spf13/cobra 用于解析命令行参数,github.com/lib/pq 用于支持 PostgreSQL 数据库连接。
  2. **定义变量:**定义了四个变量来存储用户名、密码、地址和数据库名称。
  3. **创建 Cobra 命令:**创建了一个 Cobra 命令,指定了应用程序名称、简短描述和详细描述。
  4. **定义连接字符串:**使用 fmt.Sprintf 方法根据传递的参数构建数据库连接字符串。
  5. **打开数据库连接:**使用 sql.Open 方法打开数据库连接,并将连接字符串作为参数传递。
  6. **处理错误:**如果连接失败,则输出错误信息并退出程序。
  7. **定义命令行参数:**使用 Cobra 的 Flags() 方法定义命令行参数,并指定参数名称、简短标志、默认值和描述。
  8. **标记参数为必需:**使用 Cobra 的 MarkFlagRequired 方法标记所有参数为必需的,确保用户在运行程序时提供所有参数。
  9. **执行 Cobra 命令:**使用 Cobra 的 Execute 方法执行命令,并处理潜在的错误。

注意:

  • 在连接字符串中,sslmode=disable 表示禁用 SSL 连接,这可能不安全,建议在实际使用中根据需要配置 SSL 连接。
  • 在代码中,// Do something with the database connection 表示您可以在这里执行数据库操作,例如查询数据、插入数据等等。

更多信息:

  • Cobra 文档:https://github.com/spf13/cobra
  • lib/pq 文档:https://github.com/lib/pq
  • Go 文档:https://golang.org/doc/
Golang 连接 PostgreSQL 15 - 使用 Cobra 解析参数

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

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