我将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的一部分?
答案 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