使用pgx驱动程序将Go sqlx连接到Postgres时,应该使用什么驱动程序名称?

5q4ezhmt  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(171)

或者,我还需要哪些额外的导入?
我想开始使用Postgres作为我正在进行的一些开发的主要DBMS,我的研究表明pgx是目前选择的数据库驱动程序。

package database

import (
    "fmt"
    _ "github.com/jackc/pgx/v5"
    "net/url"

    "github.com/jmoiron/sqlx"
    log "github.com/sirupsen/logrus"
)

func PgConnect(username, password, host, app string) *sqlx.DB {
    s := fmt.Sprintf("postgres://%s:%s@%s?app+name=%s&sslmode=allow", url.QueryEscape(username), url.QueryEscape(password), host, app)
    db, err := sqlx.Connect("postgres", s)
    if err != nil {
        log.Panicf("failed to connect to sqlserver://%s:%s@%s err: %s", username, "xxxxxxxxxxxx", host, err)
    }

    return db
}

URL的计算结果为:

postgres://user:password@database-host:5432/database-name?app+name=app-name&sslmode=allow

我也试过前缀postgresql,因为我在网上的一些地方都见过。
对于sqlx.Connect("postgres", s)调用中的驱动程序名称,我已经尝试了postgrespostgresqlpgx
在所有情况下,调用连接都会失败,并显示以下错误:

sql: unknown driver "postgres" (forgotten import?)

相同的代码(带有驱动程序mssql和mssql URL)可以连接到Microsoft SQL Server。
有谁能帮我把它弄起来吗?我在互联网上找到的这种语言/驱动程序/sqlx/postgres的组合非常少。

iszxjhcz

iszxjhcz1#

From the documentation,我们可以看到驱动程序的名称为pgx
可以通过sql. Open建立数据库/sql连接。

db, err := sql.Open("pgx", "postgres://pgx_md5:secret@localhost:5432/pgx_test?sslmode=disable")
if err != nil {
  return err
}

因此,您需要做两件事:
1.使用正确的驱动程序名称:

db, err := sqlx.Connect("pgx", s)

1.导入stdlib兼容性包:

import (
    _ "github.com/jackc/pgx/v5/stdlib" // Standard library bindings for pgx
)

相关问题