使用数组字段将postgres行转换为golang结构

时间:2019-04-29 08:52:20

标签: postgresql go sqlx

我将postgres db表作为

CREATE TABLE foo (
name varchar(50),
types varchar(50)[],
role varchar[10]
);

和go中相应的结构:

type Foo struct {
Name string `db:"name"`
Types []string `db:"types"`
Role string `db:"role"`
}

我想获取数据库行到我的结构中。现在,我可以使用以下方法做到这一点:

var foo Foo
query := `SELECT name, types, roles FROM foo LIMIT 1`
err = dbConn.QueryRow(query).Scan(&foo.Name,  pq.Array(&foo.Types), &foo.Role)

但是我想使用直接映射实现相同的目的。像这样:

var foo []Foo
query := `SELECT name, types, roles FROM foo`
dbWrapper.err = dbConn.Select(&foo, query)

上面的代码段给我错误,因为Types是pq数组。是否可以直接将pq数组映射为struct的一部分?

2 个答案:

答案 0 :(得分:1)

您可以为此使用pg-go lib。请查看pg.Model()。可以将整个结构传递给它。

答案 1 :(得分:1)

由于https://stackoverflow.com/a/44385791/10138004,我可以通过用extent替换import numpy from mayavi import mlab x,y = numpy.mgrid[0:90:3j, 0:360:3j] z= #some calculation mlab.surf(x, y, z, extent=(0,1,0,1,0,1)) mlab.show() 来解决sqlx(https://godoc.org/github.com/lib/pq)的pq驱动程序。

因此,更新后的结构如下:

[]string

直接映射现在就像魅力一样

pq.StringArray
相关问题