Mysql Can';无法使用GORM获取数据
我正在尝试从mysql数据库获取数据 但不要退回任何东西。 这是我第一次和Gorm在一起,我对Go的体验很差Mysql Can';无法使用GORM获取数据,mysql,go,go-gorm,Mysql,Go,Go Gorm,我正在尝试从mysql数据库获取数据 但不要退回任何东西。 这是我第一次和Gorm在一起,我对Go的体验很差 package main import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "fmt" ) type productos struct { gorm.Model id_producto int `gorm:"type:int,
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
"fmt"
)
type productos struct {
gorm.Model
id_producto int `gorm:"type:int, primary_key"`
stock int `gorm:"type:int"`
codigo string `gorm:"type:varchar(45)"`
rubro string `gorm:"type:varchar(100)" `
descripcion string `gorm:"type:varchar(140)" `
proveedores string `gorm:"type:varchar(250)" `
moneda string `gorm:"type:varchar(10)" `
costo float32 `gorm:"type:decimal" `
iva float32 `gorm:"type:decimal" `
pedir bool `gorm:"type:tinyint" `
}
func main() {
db, err := gorm.Open("mysql", "root:1281@/electronica?charset=utf8&parseTime=True&loc=Local")
if(err != nil){
panic(err)
}else{
fmt.Println("Conexión obtenida")
}
prod := &productos{}
db.First(&prod)
fmt.Println(prod.codigo)
db.Close()
}
使用以下代码段:
type Productos struct {
gorm.Model
// Remove the ProductoID field if you want to use the default gorm Model
// ProductoID int `gorm:"type:int, primary_key"`
Stock int `gorm:"type:int"`
Codigo string `gorm:"type:varchar(45)"`
Rubro string `gorm:"type:varchar(100)" `
Descripcion string `gorm:"type:varchar(140)" `
Proveedores string `gorm:"type:varchar(250)" `
Moneda string `gorm:"type:varchar(10)" `
Costo float32 `gorm:"type:decimal" `
Iva float32 `gorm:"type:decimal" `
Pedir bool `gorm:"type:tinyint" `
}
func main() {
db, err := gorm.Open("mysql", "root:admin123@/test?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
defer db.Close()
if !db.HasTable(&Productos{}) {
if err := db.AutoMigrate(&Productos{}).Error; err != nil {
}
db.Create(&Productos{
Stock: 2,
Codigo: "a",
Rubro: "b",
Descripcion: "c",
Proveedores: "d",
Moneda: "e",
Costo: 0,
Iva: 0,
})
}
producto := &Productos{}
db.First(producto)
fmt.Printf("%+v\n", producto)
}
正如@Burak Serdar指出的,您的字段没有导出(没有大写),因此在您的情况下,gorm
package看不到这些字段
在Go中,如果名称以大写字母开头,则导出名称。无法从软件包外部访问任何“未报告”的名称。
围棋之旅的更多信息:我得到了答案。我的问题是: 我包括了默认的Gorm模型,但这不等于数据库,当它被输出时,工作正常
真的很抱歉我的英语不好请将结构成员字段名大写,例如
Stock
而不是Stock
。它们现在未导出,因此无法使用反射进行设置。像这样?“”类型productos struct{gorm.Model Id\u producto intgorm:“类型:int,主键”
Stock intgorm:“类型:int”
Codigo stringgorm:“类型:varchar(45)”
Rubro stringgorm:“类型:varchar(100)”
描述字符串gorm:“类型:varchar(140)”
Proveedores stringgorm:“type:varchar(250)”
Moneda stringgorm:“type:varchar(10)”
Costo float32gorm:“type:decimal”
Iva float32gorm:“type:tinyint”
''这是连接到列名称为小写的现有数据库。对不起,我是个笨蛋go@SebastianAlbertoBordi将表迁移到数据库中时,字段将变为小写。你试过我建议的解决方案了吗?如果您仍在了解gorm,我强烈建议您使用它:)