基本上,在执行查询之后,我希望得到结果行并生成[]map[string]interface{},但我不知道如何使用API实现这一点,因为Rows.Scan()函数需要特定数量的参数来匹配请求的列数(可能还有类型),以便正确获取数据.

同样,我想对此调用进行泛化,并接受任何查询并将其转换为[]map[string]interface{},其中映射包含映射到该行的值的列名.

这可能非常低效,我计划稍后更改 struct ,使interface{}成为单个数据点的 struct .

我应该如何仅使用数据库/SQL包,或者如果需要,使用数据库/SQL/驱动程序包呢?

推荐答案

看一下使用sqlx,它比标准数据库/SQL库更容易做到这一点:

places := []Place{}
err := db.Select(&places, "SELECT * FROM place ORDER BY telcode ASC")
if err != nil {
    fmt.Printf(err)
    return
}

显然,您可以用[]map[string]interface{}替换[]Place{},但是如果您知道数据库的 struct ,那么在可能的情况下最好使用 struct .您不需要像在interface{}上那样进行任何类型断言.

Database相关问答推荐

位置运算符($)工作不正确

我如何计算mongo中的多个字段?

在 SQL Server 中以编程方式创建数据库

PostgreSQL - 按时间戳值分组?

如何设计 SaaS 数据库?

Symfony ArrayCollection 与 PersistentCollection

如何找到 Oracle 数据库的 URL?

Postgresql 从多个表中删除多行

不可重复读与脏读的区别

mySQL 复制是否具有即时数据一致性?

此平台不支持 LocalDB

Select * 和 Select [列出每个列] 之间有区别吗

Slick 3.0 在数据库驱动程序级别是reactive/asynchronous的吗?对于哪些数据库?

面向文档的数据库是否旨在取代关系数据库?

没有自动增量的sqlalchemy主键

我应该将用户 ID 公开吗?

SQL - 如何使用 MS SQL 2008 R2 备份数据库并导出为 MDF 文件

Data Mapper 是不是比 Active Record 更现代的趋势

数据库效率 - 每个用户的表与用户表

使用命令行在 Mysql 中导入压缩文件