使用 Docker 和 GORM 连接 PostgreSQL 数据库并进行 CRUD 操作
Docker 的兴起使得开发者能够在本地环境中快速启动和运行各种服务。今天,我们将看到如何使用 Docker 启动一个 PostgreSQL 服务,并使用 Go 语言的 GORM 库连接并进行增删改查操作。
1. 使用 Docker 启动 PostgreSQL
首先,我们需要启动一个 PostgreSQL 实例:
docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres
此命令会启动一个名为 "my-postgres" 的容器,密码为 "mysecretpassword",并映射到主机的 5432 端口。
2. 使用 GORM 连接到 PostgreSQL
首先,安装 GORM 和其 PostgreSQL 驱动:
go get -u gorm.io/gorm
go get -u gorm.io/driver/postgres
现在,我们可以编写代码来连接到数据库:
package main
import (
"gorm.io/gorm"
"gorm.io/driver/postgres"
)
func main() {
dsn := "host=localhost user=postgres password=mysecretpassword dbname=postgres port=5432 sslmode=disable TimeZone=Asia/Shanghai"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
panic("Failed to connect to database")
}
//... 后续的代码
}
3. 定义模型并进行 CRUD 操作
定义一个简单的用户模型:
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"type:varchar(100)"`
Email string `gorm:"uniqueIndex"`
}
// 迁移模式
db.AutoMigrate(&User{})
创建(Create)
user := User{Name: "Alice", Email: "alice@example.com"}
result := db.Create(&user)
if result.Error != nil {
panic("Could not create user")
}
读取(Read)
var users []User
db.Find(&users)
for _, user := range users {
fmt.Println(user.Name, user.Email)
}
更新(Update)
var user User
db.First(&user, 1) // 查找 ID 为 1 的用户
user.Name = "Bob"
db.Save(&user)
删除(Delete)
var user User
db.First(&user, 1) // 查找 ID 为 1 的用户
db.Delete(&user)
结论
使用 Docker 和 GORM,我们可以轻松地启动数据库服务并进行增删改查操作。这种方法使得开发和测试变得更加便捷,提高了开发效率。
这只是入门级的介绍,GORM 提供了许多高级特性,如事务、关联和复杂查询等,值得进一步探索。