postgresql - 在 Postgresql 中存储和检索 Golang slice 、结构和结构 slice

标签 postgresql go

假设我有一个名为PEOPLE,它存储Person 行。但是,Person 包含slicestructslice of struct,即SuperpowerVehicleFriendList 字段。

我应该如何使用 GolangPostgresql 中存储和检索这些值?我找不到与此问题相关的任何实用教程。使用自定义数据类型,或者 JSON,或者 ORM 方法,或者构建自定义函数来处理这些?有很多意见,但我仍然找不到解决这个问题的有效方法,请帮忙。

我正在使用 Ozzo-dbx ,但是,欢迎任何解决方案。

有人可以提供一个工作示例吗?对不起,如果这个新手问题激怒了你,但我已经尝试了几天,而且一直失败......(T_T)

type Transport struct {
    Brand string
    Size  int
}

type Friend struct {
    Name         string
    IsProgrammer bool
}

type Person struct {
    ID         int
    Name       string
    Superpower []string   //slice
    Vehicle    Transport  //struct
    FriendList []Friend   //slice of struct
}

最佳答案

在大多数情况下,您应该为 Superpowers、Vehicles 和 Friends 创建单独的表。

如果其中一个表与 People 表之间的关系是多对一或一对一的关系,您可以向它们添加外键。如果关系是多对多关系,您应该创建一个链接表来保存相关记录的 fkeys。

要存储数据,您可以使用简单的 SQL 查询字符串和 database/sql 分别插入/更新每条记录。

之后,您可以创建 TableView ,将每个人所需的数据聚合到一行中,这样您就不会用复杂的 SQL 字符串污染您的 Go 代码。然后在 Go 中定义简单的 SQL 选择查询字符串并使用 database/sql 执行它们。

关于postgresql - 在 Postgresql 中存储和检索 Golang slice 、结构和结构 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47718320/

相关文章:

javascript - 使用两个关联在 Sequelize 中获取模型的实例

sql - Postgres : STABLE function called multiple times on constant

postgresql - 如何使用本地 GUI 工具访问远程 Postgres 数据库

去结构: multiple nested fields but only one field can be specified

json - 使用未按预期工作的指针编辑结构列表变量

go - 使用 Gorilla MUX 和 Negroni 的子路由中间件

postgresql - plpgsql 函数中的变量替换

PostgreSQL 修剪过多的尾随零 : type numeric but expression is of type text

go - 令人困惑的函数调用语法

go - 什么返回: means in Go