或者,我需要哪些額外的進口?
我想開始使用 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)我嘗試過的呼叫中的驅動程式名稱postgres,postgresql并且pgx。
在所有情況下,連接呼叫都失敗并出現以下錯誤:
sql: unknown driver "postgres" (forgotten import?)
相同的代碼(帶有驅動程式mssql和 mssql URL)可以連接到 Microsoft SQL Server。
誰能幫我搞定這件事?對于這種語言/驅動程式/sqlx/postgres 的組合,我在互聯網上發現的很少。
uj5u.com熱心網友回復:
從檔案中,我們可以看到驅動程式的名稱是pgx:
可以通過 sql.Open 建立資料庫/sql 連接。
db, err := sql.Open("pgx", "postgres://pgx_md5:secret@localhost:5432/pgx_test?sslmode=disable") if err != nil { return err }
所以你需要做兩件事:
使用正確的驅動程式名稱:
db, err := sqlx.Connect("pgx", s)匯入 stdlib 兼容性包:
import ( _ "github.com/jackc/pgx/v5/stdlib" // Standard library bindings for pgx )
uj5u.com熱心網友回復:
您的問題在該import部分中。
這個匯入沒用:github.com/jmoiron/sqlx. 此外,您不必強制 Go 匯入pgx/v5包,只需在代碼中使用它即可。您可以在下面找到我的作業解決方案:
main.go檔案
package main
import "context"
func main() {
ctx := context.Background()
db := PgConnect(ctx, "postgres", "postgres", "localhost", "postgres")
defer db.Close(ctx)
}
然后是db.go我初始化資料庫連接的檔案:
package main
import (
"context"
"fmt"
"github.com/jackc/pgx/v5"
log "github.com/sirupsen/logrus"
)
func PgConnect(ctx context.Context, username, password, host, app string) *pgx.Conn {
s := fmt.Sprintf("postgres://%v:%v@%v:5432/%v", username, password, host, app)
db, err := pgx.Connect(ctx, s)
if err != nil {
log.Panicf("failed to connect to sqlserver://%s:%s@%s err: %s", username, "xxxxxxxxxxxx", host, err)
}
return db
}
如果您運行此代碼,您應該能夠成功連接到您的 Postgres 實體。
希望這可以幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/529223.html
上一篇:使用Xpath獲取文本
