Golang:使用PostgreSQL模式进行连接

Abh*_*oni 4 postgresql go database-schema

我正在寻找连接并查询到PostgreSQL。但是我只想连接到特定的模式

根据文档(JDBC),我们可以使用

jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
Run Code Online (Sandbox Code Playgroud)

更新为9.4,你可以指定像这样的新currentSchema参数的网址:

jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Run Code Online (Sandbox Code Playgroud)

但是我无法使用golang SQL驱动程序执行此操作;

根据文档,我们也可以使用SET search_path TO myschema,public; 但我只想在初始化期间声明一次,但是我认为这需要为新连接每次执行。

另外我正在使用以下代码,请帮助我确定要传递给此参数的正确参数,以便仅与模式连接

db, err := sql.Open("postgres", `dbname=`+s.settings.Database+
` user=`+s.settings.Username+` password=`+s.settings.Password+
` host=`+s.settings.Url+` sslmode=disable`) 
Run Code Online (Sandbox Code Playgroud)

正在添加currentSchema=myschemasearchpath=myschema无法正常运行!

有没有办法我只能连接到GO中的特定数据库架构

Cet*_*soz 5

设置Search_path是对的,你就做一次。IE:

db, err := sql.Open("postgres",
    "host=localhost dbname=Test sslmode=disable user=postgres password=secret")
if err != nil {
   log.Fatal("cannot connect ...")
}
defer db.Close()
db.Exec(`set search_path='mySchema'`)

rows, err := db.Query(`select blah,blah2 from myTable`)
...
Run Code Online (Sandbox Code Playgroud)


小智 5

您应该添加search_path=myschemadataSourceName

PS更好地fmt.Sprintf("host=%s port=%d dbname=%s user=%s password='%s' sslmode=disable search_path=%s", ...)代替``+``