查询的命令行参数

我正在研究一些旨在将 mysql 数据转储到 .csv 文件的代码。我想传入一个命令行参数,允许用户输入为查询运行的 ID,例如。go run main.go 2 将运行查询


SELECT * FROM table where id = 2;

我知道 Go 有 os 包,然后我可以在其中传递以下内容:


    args := os.Args

    if len(args) < 2 {

        fmt.Println("Supply ID")

        os.Exit(1)

    }

    testID := os.Args[1]

    fmt.Println(testID)

}

这是我目前正在处理的代码。如何为查询设置命令行参数?


    rows, _ := db.Query("SELECT * FROM table where id = ?;")


    err := sqltocsv.WriteFile("table.csv",rows)

    if err != nil {

        panic(err)

    }


    columns, _ := rows.Columns()

    count := len(columns)

    values := make([]interface{}, count)

    valuePtrs := make([]interface{}, count)


    for rows.Next() {

        for i := range columns {

            valuePtrs[i] = &values[i]

        }


        rows.Scan(valuePtrs...)


        for i, col := range columns {

            val := values[i]


            b, ok := val.([]byte)

            var v interface{}

            if ok {

                v = string(b)

            } else {

                v = val

            }


            fmt.Println(col, v)

        }

    }

}


蝴蝶刀刀
浏览 171回答 2
2回答

临摹微笑

只需将您的参数添加到Query:rows,&nbsp;_&nbsp;:=&nbsp;db.Query("SELECT&nbsp;*&nbsp;FROM&nbsp;table&nbsp;where&nbsp;id&nbsp;=&nbsp;?;",&nbsp;os.Args[1])

绝地无双

testID 需要和 interface{} 类型并添加到 Queryvar&nbsp;testID&nbsp;interface{} testID&nbsp;&nbsp;=&nbsp;os.Args[1]并添加到查询rows,&nbsp;_&nbsp;:=&nbsp;db.Query("SELECT&nbsp;*&nbsp;FROM&nbsp;table&nbsp;where&nbsp;id&nbsp;=&nbsp;?;",&nbsp;testID)编辑:为什么是接口{}?查询函数接受 interface{} 类型的参数。更多信息
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go