“诶,你这前后端开发环境怎么搭建这么快?”

“用了 Devbox 啊。”

“不是吧,你怎么在 Cursor 里连接开发环境的数据库,这些都配好了?”

“对啊,一键搞定。”

“开玩笑吧?这得配置半天环境吧?”

“不,因为 Devbox 已经帮我们把所有开发环境都预配置好了,直接写代码就行。”

这不是科幻电影的对白,而是真实存在的 Sealos Devbox 的功能。

今天我就给大家展示一下如何用最简单的方式,实现开发环境与数据库的无缝协作。

如果你不知道啥是 Devbox,可以看我们之前的文章:Sealos Devbox 使用教程:使用 Cursor 开发一个高仿苹果官网

Sealos 数据库介绍

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

你只需要点点鼠标,就可以创建各种数据库,而且还是高可用的,你说气人不气人。

Sealos 数据库支持丰富的数据库管理系统 (DBMS),包括 MySQL、PostgreSQL、Redis、MongoDB,此外还支持消息队列 (如 Kafka) 和向量数据库等,满足了用户多种业务场景的需求。

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

创建数据库

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

点击【新建数据库】按钮,进入数据库配置界面。在这里,你可以根据实际需求进行以下配置:

  • 选择数据库类型 (本例中我们选择 MySQL)
  • 指定数据库版本
  • 配置计算资源 (CPU 和内存)
  • 设置副本数量以实现高可用
  • 分配磁盘空间大小
  • 为数据库命名

整个过程非常直观,只需要按照界面提示一步步操作即可。

选择好配置后,点击【部署】按钮,数据库就会开始创建。等到数据库状态变为运行中以后,点击左边的小眼睛图标,即可看到数据库的连接信息。

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

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

CREATE DATABASE testdb;

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

创建 Devbox 开发环境

现在我们要创建一个 Devbox 开发环境,并通过本地的 IDE 连接到这个开发环境。

在 Sealos 桌面打开 Devbox 应用,新建一个项目,选择 Go 语言作为运行环境,CPU 内存改成 1C2G 就够了,不够可以随时再加。

点击创建,几秒钟即可启动开发环境。

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

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

是不是非常简单?直接省略了配置域名解析、申请 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: %#v\n", 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

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

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

输出大致如下:

进一步完善

我们的 demo 还可以继续完善和扩展,比如:

1. 添加数据验证

我们可以在创建和更新用户时添加数据验证逻辑,比如:

  • 验证邮箱格式是否正确
  • 检查用户名长度是否合适
  • 确保必填字段不为空

2. 接口化

将数据库操作封装成 RESTful API:

  • 实现 HTTP 接口
  • 添加接口认证
  • 实现接口版本控制

你可以继续使用 Cursor 的 AI 能力来实现这些功能,通过自然语言描述我们想要实现的功能,它就能帮我们生成相应的代码。

比如,我们可以这样描述:“帮我实现一个用户数据的批量导入功能,包含事务处理和错误回滚机制。”

Cursor 就会根据我们的描述,生成相应的代码实现。

总结

在传统开发中,连接开发环境的数据库就像是穿越千山万水去约会 - 要配 IP、调防火墙、改配置。但在 Sealos 中,Cursor 和数据库就像住在隔壁的青梅竹马,想约就约,连个电话都不用打。这种开发体验,不就是我们每个开发者心中的 “理想型” 吗?

有了这对神仙搭档,你就可以把更多精力放在实现产品创意上,而不是被繁琐的环境配置耗尽耐心。

Sealos Devbox 使用教程:使用 Cursor 一键搞定数据库开发环境的更多相关文章

  1. 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程

      在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭 ...

  2. 五步搞定Android开发环境部署

    引言   在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入 Android浪潮的朋友们,为了确保大家能顺利完成开发 ...

  3. [Modern OpenGL系列(一)]十步搞定OpenGL开发环境

    本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51292143 OpenGL官网:https://www.opengl.or ...

  4. Facebook新框架React Native,一套搞定App开发[转]

    Facebook新框架React Native,一套搞定App开发 本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注. 做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调 ...

  5. 开源作品ThinkJDBC—一行代码搞定数据库操作

    1 简介 ThinkJD,又名ThinkJDBC,一个简洁而强大的开源JDBC操作库.你可以使用Java像ThinkPHP框架的M方法一样,一行代码搞定数据库操作.ThinkJD会自动管理数据库连接, ...

  6. 使用vagrant一键部署本地php开发环境(二)制作自己的vagrant box

    在上篇的基础上 ,我们已经安装好了virtualbox和vagrant,没有安装的话,参照上篇 使用vagrant一键部署本地php开发环境(一) 1.从网易镜像或阿里等等镜像下载Centos7 ht ...

  7. 《objective-c基础教程》学习笔记 (一)—— 开发环境配置和简单类型输出

    懒惰是富有最大的敌人,再不前进,我们就out了.最近工作比较轻松,不是很忙.于是想晚上下班回家学习点新东西.看着苹果大军的一天天壮大,心里也是痒痒的.于是就想先系统的学习下Objective-C,为之 ...

  8. 【STM32H7教程】第2章 STM32H7的开发环境搭建

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第2章    STM32H7的开发环境搭建 本章主要为大 ...

  9. 使用vagrant一键部署本地php开发环境(一)

    一:我们为什么需要用这玩意 我们在开发中经常会面临的问题:环境不一致,有人用Mac有人用Windos还有几个用linux的,而我们的服务器都是linux.    在我本地是可以的啊,我测了都,没有问题 ...

  10. 一键搞定JavaEE应用,JRE+Tomcat+Mysql-JaveEE绿色运行环境JTM0.9版

    本文转载自[http://www.blogjava.net/huliqing/archive/2009/01/09/247375.html] 这是一个集成了jre,tomcat,mysql的绿色运行环 ...

随机推荐

  1. Angular 18+ 高级教程 – Library

    前言 当你需要管理超过一个项目时,你就需要知道怎么使用 Angular Library. 你可以把多个项目共享的组件放到这个 Library 了,就像 Angular Material 那样. 参考 ...

  2. SuperMap iServer新增支持FlatGeobuf数据格式,查询渲染性能提升2-3倍

    导语 FlatGeobuf是一种地理数据存储格式,采用了二进制编码,相比其他文本或XML格式更高效,可以显著减小文件大小,这使得数据的传输和存储更加快速和高效. SuperMap iServer 11 ...

  3. 【赵渝强老师】MongoDB管理用户的认证机制

    一.MongoDB用户认证机制简介 为了认证客户端,你必须要添加一个对应的用户到MongoDB.基本的步骤分为以下几步: 用户管理接口:db.createUser()方法可以创建一个用户,添加完成后可 ...

  4. MySQL9的3个新特性

    本文讲解MySQL9的3个新特性:支持将JSON输出保存到用户变量.支持准备语句以及支持面向AI的向量存储. 17.12  MySQL9新特性1--支持将JSON输出保存到用户变量 从MySQL 9版 ...

  5. eBPF 概述:第 3 部分:软件开发生态

    1. 前言 在本系列的第 1 部分和第 2 部分中,我们对 eBPF 虚拟机进行了简洁的深入研究.阅读上述部分并不是理解第 3 部分的必修课,尽管很好地掌握了低级别的基础知识确实有助于更好地理解高级别 ...

  6. Java日期时间API系列32-----Jdk8中java.time包中的新的日期时间API类应用,时间工具包 xk-time 1.0.0 版本完成。

    从Java日期时间API系列第一篇博客开始,利用业余时间对Java日期时间API源码进行了系统的.多次的阅读实践,包括Date.LocalDate.LocalDateTime.LocalTime.In ...

  7. 03 Transformer 中的多头注意力(Multi-Head Attention)Pytorch代码实现

    3:20 来个赞 24:43 弹幕,是否懂了 QKV 相乘(QKV 同源),QK 相乘得到相似度A,AV 相乘得到注意力值 Z 第一步实现一个自注意力机制 自注意力计算 def self_attent ...

  8. HDU-ACM 2024 Day2

    T1004 a*b problem(HDU 7448) 不会. T1005 小塔的养成游戏之梦(HDU 7449) 不会. T1009 强攻计策(HDU 7453) 容易发现初始速度是多少对答案没有影 ...

  9. 我被 .NET8 JIT 的一个BUG反复折磨了半年之久

    很久很久没有写过博客了, 正好最近园子又挣得一线生机, 必须得凑个热闹水一篇. 事情是这样的, 在今年的早些时候, 把公司的一部分api服务器的.net版本从6升级到了8, 毕竟6马上就是EOL了(. ...

  10. KubeSphere 在 vsleem 的落地实践

    作者:方忠,苏州威视通智能科技有限公司技术经理,开源技术爱好者,长期活跃于 dromara 开源社区并参与贡献. 公司介绍 公司简介 苏州威视通智能科技有限公司,是一家全球领先的全景 AI 平台提供商 ...