如何在PostgreSQL中跟踪SQL查询

时间:2018-11-13 14:47:17

标签: postgresql go

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,zone_z_id,dimension,price FROM   gift_box_z ")

if err != nil {
    fmt.Println("inside the error .........................",err)

}

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

2 个答案:

答案 0 :(得分:4)

sql.Open()的第二个参数需要一个连接字符串。它具有以下形式:

fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
            host, port, user, password, dbname)

它包含打开与Postgres的连接所需的信息。

答案 1 :(得分:0)

sql.Open()需要2个内容:“ driverName”和“ dataSourceName”。以sqlhooks为例,他们使用sqlite作为数据库。除此之外,他们使用了go-sqlite3,如果您仔细查看在行号886上的文件sqlite3.go。您会看到datasourcename':memory:',这意味着我们选择在内存中使用sqlite D b。

“ dataSourceName”将根据选择的数据库而有所不同。它的基本含义是数据源名称格式的连接字符串。

原因为何有效 fmt.Sprintf(“主机=%s端口=%d用户=%s密码=%s dbname =%s sslmode =禁用”,             主机,端口,用户,密码,dbname)