Golang 连接 PostgreSQL 15 - 使用 Cobra 包解析参数
使用 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
代码说明:
-
导入必要的包:
database/sql:用于连接数据库fmt:用于格式化字符串log:用于记录错误信息github.com/lib/pq:PostgreSQL 驱动程序github.com/spf13/cobra:用于解析命令行参数
-
定义全局变量:
user:用户名password:密码host:数据库地址database:数据库名称
-
创建 Cobra 命令:
rootCmd:主命令,用于定义应用程序的名称、简短描述和运行逻辑。Run函数:用于执行连接测试,包括建立连接、Ping 数据库和输出连接结果。
-
定义命令行参数:
rootCmd.PersistentFlags().StringVarP(...):使用 Cobra 的PersistentFlags()方法定义参数,并设置参数的名称、缩写、默认值和描述。
-
执行命令:
rootCmd.Execute():执行命令,并解析命令行参数。
注意:
- 请将
KXGNEYpkyxuXXfRB替换为您的实际密码。 - 代码中的
sslmode=disable表示禁用 SSL 连接。根据您的实际情况调整此设置。 - 请确保您的系统已安装
libpq包。
希望本指南能够帮助您使用 Golang 连接 PostgreSQL 15 数据库,并使用 Cobra 包解析命令行参数。
原文地址: https://www.cveoy.top/t/topic/nheQ 著作权归作者所有。请勿转载和采集!