如何在postgresql中跟踪sql查询

sql.Register("sqlWithHooks", sqlhooks.Wrap(r.Driver(), &Hooks{}))


// Connect to the registered wrapped driver

db, err := sql.Open("sqlWithHooks", ":memory:")

if err != nil {

    fmt.Println("error",err)


}


rows, err := db.Query("SELECT id,name,cid,dimension,price FROM   table_name ")


if err != nil {

    fmt.Println("inside the error .........................",err)


}

运行此代码后,我收到连接信息字符串中“:内存:”之后缺少“=”的错误。谁能告诉我我在这里所做的有什么问题?


子衿沉夜
浏览 160回答 2
2回答

梵蒂冈之花

的第二个参数sql.Open()需要一个连接字符串。它具有以下形式:fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",             host, port, user, password, dbname)它包含打开与 Postgres 的连接所需的信息。

呼啦一阵风

sql.Open() 需要 2 个东西 'driverName' 和 'dataSourceName'。以sqlhooks为例,他们使用 sqlite 作为数据库。除此之外,他们还使用了go-sqlite3,如果你仔细查看文件sqlite3.go的第 886 行。你会看到数据源名称“:memory:”,这意味着我们选择了 sqlite db 的内存利用。'dataSourceName' 将根据选择的数据库而有所不同。它基本上意味着数据源名称格式的连接字符串。这有效的原因 fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)
打开App,查看更多内容
随时随地看视频慕课网APP