Golang 连接 PostgreSQL 15 - 使用 Cobra 解析参数
使用 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
解释:
- 导入必要的包:
database/sql用于连接数据库,fmt用于格式化输出,os用于操作系统,github.com/spf13/cobra用于解析命令行参数,github.com/lib/pq用于支持 PostgreSQL 数据库连接。 - **定义变量:**定义了四个变量来存储用户名、密码、地址和数据库名称。
- **创建 Cobra 命令:**创建了一个 Cobra 命令,指定了应用程序名称、简短描述和详细描述。
- **定义连接字符串:**使用
fmt.Sprintf方法根据传递的参数构建数据库连接字符串。 - **打开数据库连接:**使用
sql.Open方法打开数据库连接,并将连接字符串作为参数传递。 - **处理错误:**如果连接失败,则输出错误信息并退出程序。
- **定义命令行参数:**使用 Cobra 的
Flags()方法定义命令行参数,并指定参数名称、简短标志、默认值和描述。 - **标记参数为必需:**使用 Cobra 的
MarkFlagRequired方法标记所有参数为必需的,确保用户在运行程序时提供所有参数。 - **执行 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/
原文地址: https://www.cveoy.top/t/topic/nheP 著作权归作者所有。请勿转载和采集!