相关疑难解决方法(0)

如何在http goroutines之间共享mysql连接?

我是Go noob,找不到任何在Go中打开mysql连接然后在http处理程序之间共享它的完整示例.这是我的代码到目前为止,我将如何使用我在HomeHandler中的main()中打开的数据库连接?

package main

import (
  "database/sql"
  "fmt"
  _ "github.com/go-sql-driver/mysql"
  "github.com/gorilla/mux"
  "log"
  "net/http"
)

func main() {

  fmt.Println("starting up")

  db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")
  if err != nil {
    log.Fatalf("Error opening database: %v", err)
  }

  db.SetMaxIdleConns(100)

  r := mux.NewRouter()
  r.HandleFunc("/", HomeHandler)

  http.Handle("/", r)
  http.ListenAndServe(":8080", nil)

}

func HomeHandler(w http.ResponseWriter, r *http.Request) {

  fmt.Fprintf(w, "home")

}
Run Code Online (Sandbox Code Playgroud)

go

34
推荐指数
1
解决办法
2万
查看次数

使用Golang将MySQL表转储为JSON

在Go中将MySQL的快速转储器放到了JSON中.但是我发现从数据库中检索的所有内容都是[]byte数组.因此,我将所有内容编码为字符串,而不是原生的JSON整数或布尔值.

代码子集:

import (
    "encoding/json"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)


func dumpTable(w io.Writer, table) {
    // ...

    rows, err := Query(db, fmt.Sprintf("SELECT * FROM %s", table))
    checkError(err)
    columns, err := rows.Columns()
    checkError(err)

    scanArgs := make([]interface{}, len(columns))
    values   := make([]interface{}, len(columns))

    for i := range values {
        scanArgs[i] = &values[i]
    }

    for rows.Next() {
        err = rows.Scan(scanArgs...)
        checkError(err)

        record := make(map[string]interface{})

        for i, col := range values {
            if col != nil {
                fmt.Printf("\n%s: type= %s\n", columns[i], reflect.TypeOf(col))

                switch t …
Run Code Online (Sandbox Code Playgroud)

mysql go

20
推荐指数
1
解决办法
2万
查看次数

标签 统计

go ×2

mysql ×1