gpt4 book ai didi

postgresql - Golang 记录 ID 为 0

转载 作者:IT王子 更新时间:2023-10-29 01:25:57 25 4
gpt4 key购买 nike

我有以下 Car 模型和一个 cars slice :

type Car struct {
ID int `json:"id"`
Name string `json:"title"`
}

var cars []Car

在 Postgres 数据库上,我创建了一个 cars 表来保存 car 记录。

create table cars (id serial, name varchar);

并保存了一些汽车记录:

insert into cars (name) values ('Toyota');
insert into cars (name) values ('Lexus');

记录已成功创建,增量整数 ID 为 1 和 2。

在我的 Go 服务器中,我进行以下查询以获取汽车记录:

db.Query("SELECT * from cars").Rows(&cars)

for _, car := range cars {
fmt.Println(car)
}

虽然有响应,但每条记录的 id 都为 0。我试图找出原因,但无法找到。有人有什么想法吗?

最佳答案

database/sql 包不提供直接将数据扫描到结构中,您应该遍历从数据库查询返回的行,然后将数据扫描到结构中:

var cars []cars
for rows.Next() {
var car cars
err = rows.Scan(&c.ID, &c.Name)
if err != nil {
log.Fatalf("Scan: %v", err)
}
cars = append(cars, car)
}
fmt.Println(cars)

或者你可以使用sql包名的扩展名sqlx这将使您可以直接将结果扫描到结构的 slice 中:

cars := []cars{}
db.Select(&cars, "SELECT * from cars")

关于postgresql - Golang 记录 ID 为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52128388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com