我有以下汽车模型和汽车切片:
type Car struct {
ID int `json:"id"`
Name string `json:"title"`
}
var cars []Car
Run Code Online (Sandbox Code Playgroud)
在Postgres数据库中,我创建了一个汽车表来保存汽车记录.
create table cars (id serial, name varchar);
Run Code Online (Sandbox Code Playgroud)
并保存了几个车记录:
insert into cars (name) values ('Toyota');
insert into cars (name) values ('Lexus');
Run Code Online (Sandbox Code Playgroud)
使用增量整数ID 1和2成功创建记录.
在我的Go服务器中,我正在进行以下查询以获取汽车记录:
db.Query("SELECT * from cars").Rows(&cars)
for _, car := range cars {
fmt.Println(car)
}
Run Code Online (Sandbox Code Playgroud)
虽然有回复,但每条记录的ID都是0.我试图找出原因,但我无法做到.任何人有任何想法?
database/sql package不提供将数据直接扫描到结构,您应该迭代从数据库查询返回的行,然后将数据扫描到struct中:
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)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用sql包名称sqlx的扩展名,它将使您直接将结果扫描到结构片中:
cars := []cars{}
db.Select(&cars, "SELECT * from cars")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |