所有文章 > AI驱动 > 使用Cursor 和 Devbox 一键搞定开发环境
使用Cursor 和 Devbox 一键搞定开发环境

使用Cursor 和 Devbox 一键搞定开发环境

使用 Cursor 和 Devbox 一键搞定开发环境123test

image

“诶,你这前后端开发环境怎么搭建这么快?”“用了 Devbox 啊。”“不是吧,你怎么在 Cursor 里连接开发环境的数据库,这些都配好了?”“对啊,一键搞定。”“开玩笑吧?这得配置半天环境吧?”“不,因为 Devbox 已经帮我们把所有开发环境都预配置好了,直接写代码就行。”

这不是科幻电影的对白,而是真实存在的 Sealos Devbox 的功能。今天我就给大家展示一下如何用最简单的方式,实现开发环境与数据库的无缝协作。如果你不知道啥是 Devbox,可以看我们之前的文章 👇

image

我一行代码也没写,Cursor 和 Devbox 给我写了个高仿苹果官网!

Sealos 数据库介绍

Sealos 数据库是一个强大且灵活的数据库管理平台,允许用户在 Sealos 上可视化地管理和使用各种数据库。并且还提供了一整套高效的工具和机制,使数据库的管理、扩展、监控和故障恢复更加便捷和自动化,适合从开发到生产的各类场景。

image

你只需要点点鼠标,就可以创建各种数据库,而且还是高可用的,你说气人不气人。Sealos 数据库支持丰富的数据库管理系统 (DBMS),包括 MySQL、PostgreSQL、Redis、MongoDB,此外还支持消息队列 (如 Kafka) 和向量数据库等,满足了用户多种业务场景的需求。

除此之外,Sealos 数据库还支持自动故障恢复、灵活的数据备份与恢复机制、数据迁移等等各种特性,这里我就不一一列举了,感兴趣的可以看 Sealos 官方文档。

创建数据库

首先,我们需要创建一个数据库。浏览器进入 Sealos 桌面:https://hzh.sealos.run 然后打开【数据库】App。

image

  • 点击【新建数据库】按钮,进入数据库配置界面。
  • 在这里,你可以根据实际需求进行以下配置:
    • 选择数据库类型 (本例中我们选择 MySQL)
    • 指定数据库版本
    • 配置计算资源 (CPU 和内存)
    • 设置副本数量以实现高可用
    • 分配磁盘空间大小
    • 为数据库命名

image

整个过程非常直观,只需要按照界面提示一步步操作即可。选择好配置后,点击【部署】按钮,数据库就会开始创建。等到数据库状态变为运行中以后,点击左边的小眼睛图标,即可看到数据库的连接信息。

image

点击【连接】按钮,进入数据库的终端界面。

image

在终端界面输入以下命令创建测试数据库。

CREATE DATABASE testdb;

这时候,基本的数据库配置就搞定啦。接下来开始创建开发环境。

创建 Devbox 开发环境

现在我们要创建一个 Devbox 开发环境,并通过本地的 IDE 连接到这个开发环境。在 Sealos 桌面打开 Devbox 应用,新建一个项目,选择 Go 语言作为运行环境,CPU 内存改成 1C2G 就够了,不够可以随时再加。点击创建,几秒钟即可启动开发环境。

接下来在操作选项中点击 Cursor,将会自动打开本地的 Cursor 编程 IDE。

image

接着会提示安装 Devbox 插件,安装后即可自动连接开发环境。

image

image

是不是非常简单?直接省略了配置域名解析、申请 SSL 证书,配置网关等与开发无关的繁琐操作,爽!

初始化项目

现在我们需要初始化一个 Go 项目并安装相关依赖。在 Cursor 的终端中执行以下命令:

go mod init go-db-demo
go mod tidy
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

使用 GORM 连接 MySQL 数据库

接下来我们会创建一个简单的 demo 来使用 GORM 这个 Go 语言的 ORM 框架来连接 MySQL 数据库。整个项目的目录结构如下:

├── main.go
├── config/
│   └── config.go
├── models/
│   └── user.go
├── database/
│   └── database.go
├── repository/
│   └── user_repository.go
└── go.mod

首先我们在 config 目录下创建一个 config.go 文件,配置数据库的连接信息,包括 MySQL 的用户名、密码、数据库名称、数据库地址、数据库端口等。

package config

import (
    "fmt"
)

var (
    DBUser     = "root"
    DBPassword = "9w7zjt8f"
    DBName     = "testdb"
    DBHost     = "test1-db-mysql.ns-kc811077.svc"
    DBPort     = "3306"
)

func GetDSN() string {
    return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
        DBUser, DBPassword, DBHost, DBPort, DBName)
}

接下来在 database 目录下创建 database.go 文件,用于初始化数据库连接:

package database

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
    "go-db-demo/config"
    "log"
)

var DB *gorm.DB

func Connect() {
    dsn := config.GetDSN()
    var err error
    DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        log.Fatalf("Failed to connect to database: %v", err)
    }
    log.Println("Database connected successfully!")
}

现在我们在 models 目录下创建 user.go 文件,定义 User 模型:

package models

import "gorm.io/gorm"

type User struct {
    gorm.Model
    Name  string json:"name"
    Email string json:"email" gorm:"unique"
}

接下来我们需要实现一些基本的数据库操作功能。我们将在 models 目录下创建 user_operations.go 文件,用于定义用户相关的增删改查操作。这些操作包括:

  • 创建新用户
  • 根据 ID 查询用户
  • 更新用户信息
  • 删除用户

下面是具体的实现代码:

package repository

import (
    "go-db-demo/database"
    "go-db-demo/models"
)

func CreateUser(user *models.User) error {
    return database.DB.Create(user).Error
}

func GetUserByID(id uint) (*models.User, error) {
    var user models.User
    err := database.DB.First(&user, id).Error
    return &user, err
}

func UpdateUser(user *models.User) error {
    return database.DB.Save(user).Error
}

func DeleteUser(id uint) error {
    return database.DB.Delete(&models.User{}, id).Error
}

现在让我们在主程序中使用这些功能。在 main.go 文件中,我们将初始化数据库连接,并执行一些基本的 CRUD 操作来测试我们的实现:

package main

import (
    "fmt"
    "go-db-demo/database"
    "go-db-demo/models"
    "go-db-demo/repository"
)

func main() {
    // 连接数据库
    database.Connect()

    // 自动迁移数据库结构
    database.DB.AutoMigrate(&models.User{})

    // 创建用户
    newUser := &models.User{Name: "John Doe", Email: "john@example.com"}
    if err := repository.CreateUser(newUser); err != nil {
        fmt.Println("Error creating user:", err)
    } else {
        fmt.Println("User created:", newUser)
    }

    // 查询用户
    user, err := repository.GetUserByID(newUser.ID)
    if err != nil {
        fmt.Println("Error fetching user:", err)
    } else {
        fmt.Printf("Fetched user: %#vn", user)
    }

    // 更新用户
    user.Name = "John Updated"
    if err := repository.UpdateUser(user); err != nil {
        fmt.Println("Error updating user:", err)
    } else {
        fmt.Println("User updated:", user)
    }

    // 删除用户
    if err := repository.DeleteUser(user.ID); err != nil {
        fmt.Println("Error deleting user:", err)
    } else {
        fmt.Println("User deleted successfully")
    }
}

现在我们已经完成了基本的 CRUD 操作代码,我们来测试一下。在 Cursor 的终端中执行以下命令:

go run main.go

现在你将看到程序对数据库的一系列操作结果,包括:

  • 创建用户的结果信息
  • 查询用户的详细数据
  • 更新用户后的状态
  • 删除用户的确认信息

输出大致如下:

image

进一步完善我们的 demo

还可以继续完善和扩展,比如:

  1. 添加数据验证

    • 我们可以在创建和更新用户时添加数据验证逻辑,比如:
      • 验证邮箱格式是否正确
      • 检查用户名长度是否合适
      • 确保必填字段不为空
  2. 接口化

    • 将数据库操作封装成 RESTful API:
      • 实现 HTTP 接口
      • 添加接口认证
      • 实现接口版本控制

你可以继续使用 Cursor 的 AI 能力来实现这些功能,通过自然语言描述我们想要实现的功能,它就能帮我们生成相应的代码。比如,我们可以这样描述:“帮我实现一个用户数据的批量导入功能,包含事务处理和错误回滚机制。”Cursor 就会根据我们的描述,生成相应的代码实现。

总结

在传统开发中,连接开发环境的数据库就像是穿越千山万水去约会 – 要配 IP、调防火墙、改配置。但在 Sealos 中,Cursor 和数据库就像住在隔壁的青梅竹马,想约就约,连个电话都不用打。这种开发体验,不就是我们每个开发者心中的 “理想型” 吗?有了这对神仙搭档,你就可以把更多精力放在实现产品创意上,而不是被繁琐的环境配置耗尽耐心。

image

加入 Sealos 开源社区体验像个人电脑一样简单的云操作系统

🏠官网链接 https://sealos.run

🐙GitHub 地址 https://github.com/labring/sealos

📑访问 Sealos 文档 https://sealos.run/docs/Intro

🏘️逛逛论坛 https://forum.laf.run/

往期推荐

哈哈,我好像知道 Cursor 为什么叫 Cursor 了,真相竟然是光标 2024-11-11

image

不会前端也能写官网?没问题,Devbox+Cursor 带你起飞 2024-11-06

image

别再浪费时间配置环境了!这个比 Laf 还牛的云开发框架,让我3分钟搭建完整应用 2024-11-05

image

我一行代码也没写,Cursor 和 Devbox 给我写了个高仿苹果官网! 2024-10-28

image

3分钟部署上线小产品?Cursor 和 Devbox 让开发从未如此简单! 2024-10-29

image

关于 Sealos

Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够像使用个人电脑一样简单地使用云。

关注 Sealos 公众号与我们一同成长👇👇👇

原文转载自:https://mp.weixin.qq.com/s/xq9Q7kBX8f_sw_0kUjyC6A

#你可能也喜欢这些API文章!