Golang 连接 PostgreSQL 15 使用 Cobra 解析参数
使用 Cobra 包解析参数连接 PostgreSQL 15
本文将展示如何使用 Golang 连接 PostgreSQL 15 数据库,并使用 github.com/spf13/cobra 包解析命令行参数。
代码示例
package main
import (
"database/sql"
"fmt"
"log"
"github.com/spf13/cobra"
_ "github.com/lib/pq"
)
var (
username string
password string
address string
dbname string
)
func main() {
var rootCmd = &cobra.Command{
Use: "postgres",
Short: "Connect to PostgreSQL",
Run: func(cmd *cobra.Command, args []string) {
// 连接数据库
connStr := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable", username, password, address, dbname)
db, err := sql.Open("postgres", connStr)
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 查询数据库
rows, err := db.Query("SELECT * FROM mytable")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// 打印结果
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Name: %s\n", id, name)
}
},
}
rootCmd.PersistentFlags().StringVar(&username, "username", "root", "PostgreSQL username")
rootCmd.PersistentFlags().StringVar(&password, "password", "KXGNEYpkyxuXXfRB", "PostgreSQL password")
rootCmd.PersistentFlags().StringVar(&address, "address", "192.168.1.100:5432", "PostgreSQL address")
rootCmd.PersistentFlags().StringVar(&dbname, "dbname", "test", "PostgreSQL database name")
if err := rootCmd.Execute(); err != nil {
log.Fatal(err)
}
}
说明
- 首先导入必要的包,包括
database/sql、fmt、log和github.com/spf13/cobra以及github.com/lib/pq用于连接 PostgreSQL。 - 定义全局变量
username、password、address和dbname用于存储命令行参数。 - 创建
cobra.Command对象rootCmd,设置Use、Short和Run属性。 - 在
Run函数中,使用fmt.Sprintf格式化连接字符串,并使用sql.Open连接到数据库。 - 使用
db.Query执行查询语句,并使用rows.Next循环遍历结果集,使用rows.Scan扫描数据并打印。 - 使用
rootCmd.PersistentFlags().StringVar添加命令行参数,并设置默认值。 - 最后使用
rootCmd.Execute执行命令。
总结
本文展示了如何使用 Golang 连接 PostgreSQL 15 数据库并使用 Cobra 包解析命令行参数。您可以根据需要修改代码以满足您的实际需求。
原文地址: https://www.cveoy.top/t/topic/nheK 著作权归作者所有。请勿转载和采集!