如何在PostgreSQL数据库中创建内容
我正在学习使用PostgreSQL和GORM。我正在创建一个结构,连接到数据库,并尝试写入数据库 源代码:如何在PostgreSQL数据库中创建内容,postgresql,go,crud,Postgresql,Go,Crud,我正在学习使用PostgreSQL和GORM。我正在创建一个结构,连接到数据库,并尝试写入数据库 源代码: db,err:=gorm.Open(“postgres”,“user=superuser password=ojcafizp123 dbname=gorm sslmode=disable”) 如果出错!=零{ 死机(err.Error()) } 延迟db.Close() 数据库:=db.db() err=database.Ping() 如果出错!=零{ 死机(err.Error()) }
db,err:=gorm.Open(“postgres”,“user=superuser password=ojcafizp123 dbname=gorm sslmode=disable”)
如果出错!=零{
死机(err.Error())
}
延迟db.Close()
数据库:=db.db()
err=database.Ping()
如果出错!=零{
死机(err.Error())
}
Println(“与PostgreSQL的连接成功!”)
端口:=“:3000”
r:=chi.NewRouter()
r、 获取(“/api/test”,test)
http.listendServe(端口,r)
}
func CreateRate(w http.ResponseWriter,r*http.Request){
db,err:=gorm.Open(“postgres”,“user=superuser password=ojcafizp123 dbname=gorm sslmode=disable”)
治愈:=加密{“BTC”,“USD”,10000100}
if db.NewRecord(治愈){
err=db.Create(&cure).错误
如果错误!=零{
死机(err.Error())
}
}
}
结构:
类型加密结构{
Cur1字符串`json:“Cur1”`
Cur2字符串`json:“Cur2”`
速率浮动64`json:“速率”`
Timestamp int64`json:“Timestamp”`
}
正在尝试在数据库中查找我的记录:
func测试(w http.ResponseWriter,r*http.Request){
db,err:=gorm.Open(“postgres”,“user=superuser password=ojcafizp123 dbname=gorm sslmode=disable”)
var testcur加密
db.First(&testcur)
fmt.Println(测试电流)
如果错误!=零{
fmt.Println(“未检测到测试电流”)
}
}
但我明白了:
已成功连接到PostgreSQL!{0}
(/home/superuser/go/src/CryptoProject/main.go:97)[2019-07-27
05:09:10]pq:关系“加密”不存在
连接正在工作,但基仍然为空。错误表明表
cryptos
当前不存在,这就是插入不工作且数据库中没有任何内容的原因
我以前没有专门使用GORM,但是如果它与其他ORM类似,则需要创建一个表示表的数据模型,然后它可以使用该模型创建表。对其文档的快速扫描显示GORM有一个名为的函数,可以针对
您还可以通过psql等工具使用常规SQL在GORM之外创建表。除了@khampson之外,您还可以使用
AutoMigrate
功能:
type Product struct {
gorm.Model
Code string
Price uint
}
// Migrate the schema
db.AutoMigrate(&Product{})
.为了补充@khampson的答案,您实际上没有调用
CreateRate
,因此即使您创建了表,但没有先插入一些内容,测试仍然会失败。还有一件事,您在测试
处理程序中处理错误的方法是错误的,首先您忽略了从打开
返回的错误,然后,当您首先调用时,您会检查从打开
返回的错误,而不是检查这是否产生了错误。对此进行扩展:。