你只需要點點鼠標(biāo),就可以創(chuàng)建各種數(shù)據(jù)庫,而且還是高可用的,你說氣人不氣人。

Sealos 數(shù)據(jù)庫支持豐富的數(shù)據(jù)庫管理系統(tǒng) (DBMS),包括 MySQL、PostgreSQL、Redis、MongoDB,此外還支持消息隊列 (如 Kafka) 和向量數(shù)據(jù)庫等,滿足了用戶多種業(yè)務(wù)場景的需求。

除此之外,Sealos 數(shù)據(jù)庫還支持自動故障恢復(fù)、靈活的數(shù)據(jù)備份與恢復(fù)機(jī)制、數(shù)據(jù)遷移等等各種特性,這里我就不一一列舉了,感興趣的可以看 Sealos 官方文檔。

創(chuàng)建數(shù)據(jù)庫

首先,我們需要創(chuàng)建一個數(shù)據(jù)庫。瀏覽器進(jìn)入 Sealos 桌面:https://hzh.sealos.run

然后打開【數(shù)據(jù)庫】App。

點擊【新建數(shù)據(jù)庫】按鈕,進(jìn)入數(shù)據(jù)庫配置界面。在這里,你可以根據(jù)實際需求進(jìn)行以下配置:

整個過程非常直觀,只需要按照界面提示一步步操作即可。

選擇好配置后,點擊【部署】按鈕,數(shù)據(jù)庫就會開始創(chuàng)建。等到數(shù)據(jù)庫狀態(tài)變?yōu)檫\行中以后,點擊左邊的小眼睛圖標(biāo),即可看到數(shù)據(jù)庫的連接信息。

點擊【連接】按鈕,進(jìn)入數(shù)據(jù)庫的終端界面。

在終端界面輸入以下命令創(chuàng)建測試數(shù)據(jù)庫。

CREATE DATABASE testdb;

這時候,基本的數(shù)據(jù)庫配置就搞定啦。接下來開始創(chuàng)建開發(fā)環(huán)境。

創(chuàng)建 Devbox 開發(fā)環(huán)境

現(xiàn)在我們要創(chuàng)建一個 Devbox 開發(fā)環(huán)境,并通過本地的 IDE 連接到這個開發(fā)環(huán)境。

在 Sealos 桌面打開 Devbox 應(yīng)用,新建一個項目,選擇 Go 語言作為運行環(huán)境,CPU 內(nèi)存改成 1C2G 就夠了,不夠可以隨時再加。

點擊創(chuàng)建,幾秒鐘即可啟動開發(fā)環(huán)境。

接下來在操作選項中點擊 Cursor,將會自動打開本地的 Cursor 編程 IDE。

接著會提示安裝 Devbox 插件,安裝后即可自動連接開發(fā)環(huán)境。

是不是非常簡單?直接省略了配置域名解析、申請 SSL 證書,配置網(wǎng)關(guān)等與開發(fā)無關(guān)的繁瑣操作,爽!

初始化項目

現(xiàn)在我們需要初始化一個 Go 項目并安裝相關(guān)依賴。在 Cursor 的終端中執(zhí)行以下命令:

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

使用 GORM 連接 MySQL 數(shù)據(jù)庫

接下來我們會創(chuàng)建一個簡單的 demo 來使用 GORM 這個 Go 語言的 ORM 框架來連接 MySQL 數(shù)據(jù)庫。

整個項目的目錄結(jié)構(gòu)如下:

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

首先我們在 config 目錄下創(chuàng)建一個 config.go 文件,配置數(shù)據(jù)庫的連接信息,包括 MySQL 的用戶名、密碼、數(shù)據(jù)庫名稱、數(shù)據(jù)庫地址、數(shù)據(jù)庫端口等。

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 目錄下創(chuàng)建 database.go 文件,用于初始化數(shù)據(jù)庫連接:

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!")
}

現(xiàn)在我們在 models 目錄下創(chuàng)建 user.go 文件,定義 User 模型:

package models

import "gorm.io/gorm"

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

接下來我們需要實現(xiàn)一些基本的數(shù)據(jù)庫操作功能。我們將在 models 目錄下創(chuàng)建 user_operations.go 文件,用于定義用戶相關(guān)的增刪改查操作。

這些操作包括:

下面是具體的實現(xiàn)代碼:

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
}

現(xiàn)在讓我們在主程序中使用這些功能。在 main.go 文件中,我們將初始化數(shù)據(jù)庫連接,并執(zhí)行一些基本的 CRUD 操作來測試我們的實現(xiàn):

package main

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

func main() {
// 連接數(shù)據(jù)庫
database.Connect()

// 自動遷移數(shù)據(jù)庫結(jié)構(gòu)
database.DB.AutoMigrate(&models.User{})

// 創(chuàng)建用戶
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")
}
}

現(xiàn)在我們已經(jīng)完成了基本的 CRUD 操作代碼,我們來測試一下。

在 Cursor 的終端中執(zhí)行以下命令:

go run main.go

現(xiàn)在你將看到程序?qū)?shù)據(jù)庫的一系列操作結(jié)果,包括:

輸出大致如下:

進(jìn)一步完善

我們的 demo 還可以繼續(xù)完善和擴(kuò)展,比如:

1. 添加數(shù)據(jù)驗證

我們可以在創(chuàng)建和更新用戶時添加數(shù)據(jù)驗證邏輯,比如:

2. 接口化

將數(shù)據(jù)庫操作封裝成 RESTful API:

你可以繼續(xù)使用 Cursor 的 AI 能力來實現(xiàn)這些功能,通過自然語言描述我們想要實現(xiàn)的功能,它就能幫我們生成相應(yīng)的代碼。

比如,我們可以這樣描述:“幫我實現(xiàn)一個用戶數(shù)據(jù)的批量導(dǎo)入功能,包含事務(wù)處理和錯誤回滾機(jī)制?!?/p>

Cursor 就會根據(jù)我們的描述,生成相應(yīng)的代碼實現(xiàn)。

總結(jié)

在傳統(tǒng)開發(fā)中,連接開發(fā)環(huán)境的數(shù)據(jù)庫就像是穿越千山萬水去約會 – 要配 IP、調(diào)防火墻、改配置。但在 Sealos 中,Cursor 和數(shù)據(jù)庫就像住在隔壁的青梅竹馬,想約就約,連個電話都不用打。這種開發(fā)體驗,不就是我們每個開發(fā)者心中的 “理想型” 嗎?

有了這對神仙搭檔,你就可以把更多精力放在實現(xiàn)產(chǎn)品創(chuàng)意上,而不是被繁瑣的環(huán)境配置耗盡耐心。

文章轉(zhuǎn)載自: 別人還在配數(shù)據(jù)庫環(huán)境,我用 Cursor 和 Devbox 一鍵搞定開發(fā)環(huán)境

上一篇:

Cursor 的開源平替產(chǎn)品 Cline介紹

下一篇:

使用 Goland 遠(yuǎn)程開發(fā)基于 MCP 的智能對話助手
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費