“誒,你這前后端開發(fā)環(huán)境怎么搭建這么快?”“用了 Devbox 啊?!薄安皇前桑阍趺丛?Cursor 里連接開發(fā)環(huán)境的數據庫,這些都配好了?”“對啊,一鍵搞定。”“開玩笑吧?這得配置半天環(huán)境吧?”“不,因為 Devbox 已經幫我們把所有開發(fā)環(huán)境都預配置好了,直接寫代碼就行?!?/p>

這不是科幻電影的對白,而是真實存在的 Sealos Devbox 的功能。今天我就給大家展示一下如何用最簡單的方式,實現開發(fā)環(huán)境與數據庫的無縫協(xié)作。如果你不知道啥是 Devbox,可以看我們之前的文章 ??

image

我一行代碼也沒寫,Cursor 和 Devbox 給我寫了個高仿蘋果官網!

Sealos 數據庫介紹

Sealos 數據庫是一個強大且靈活的數據庫管理平臺,允許用戶在 Sealos 上可視化地管理和使用各種數據庫。并且還提供了一整套高效的工具和機制,使數據庫的管理、擴展、監(jiān)控和故障恢復更加便捷和自動化,適合從開發(fā)到生產的各類場景。

image

你只需要點點鼠標,就可以創(chuàng)建各種數據庫,而且還是高可用的,你說氣人不氣人。Sealos 數據庫支持豐富的數據庫管理系統(tǒng) (DBMS),包括 MySQL、PostgreSQL、Redis、MongoDB,此外還支持消息隊列 (如 Kafka) 和向量數據庫等,滿足了用戶多種業(yè)務場景的需求。

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

創(chuàng)建數據庫

首先,我們需要創(chuàng)建一個數據庫。瀏覽器進入 Sealos 桌面:https://hzh.sealos.run 然后打開【數據庫】App。

image

image

整個過程非常直觀,只需要按照界面提示一步步操作即可。選擇好配置后,點擊【部署】按鈕,數據庫就會開始創(chuàng)建。等到數據庫狀態(tài)變?yōu)檫\行中以后,點擊左邊的小眼睛圖標,即可看到數據庫的連接信息。

image

點擊【連接】按鈕,進入數據庫的終端界面。

image

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

CREATE DATABASE testdb;

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

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

現在我們要創(chuàng)建一個 Devbox 開發(fā)環(huán)境,并通過本地的 IDE 連接到這個開發(fā)環(huán)境。在 Sealos 桌面打開 Devbox 應用,新建一個項目,選擇 Go 語言作為運行環(huán)境,CPU 內存改成 1C2G 就夠了,不夠可以隨時再加。點擊創(chuàng)建,幾秒鐘即可啟動開發(fā)環(huán)境。

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

image

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

image

image

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

初始化項目

現在我們需要初始化一個 Go 項目并安裝相關依賴。在 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 數據庫

接下來我們會創(chuàng)建一個簡單的 demo 來使用 GORM 這個 Go 語言的 ORM 框架來連接 MySQL 數據庫。整個項目的目錄結構如下:

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

首先我們在 config 目錄下創(chuàng)建一個 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 目錄下創(chuàng)建 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 目錄下創(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"
}

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

下面是具體的實現代碼:

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 文件中,我們將初始化數據庫連接,并執(zhí)行一些基本的 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{})

    // 創(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: %#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 的終端中執(zhí)行以下命令:

go run main.go

現在你將看到程序對數據庫的一系列操作結果,包括:

輸出大致如下:

image

進一步完善我們的 demo

還可以繼續(xù)完善和擴展,比如:

  1. 添加數據驗證

  2. 接口化

你可以繼續(xù)使用 Cursor 的 AI 能力來實現這些功能,通過自然語言描述我們想要實現的功能,它就能幫我們生成相應的代碼。比如,我們可以這樣描述:“幫我實現一個用戶數據的批量導入功能,包含事務處理和錯誤回滾機制?!盋ursor 就會根據我們的描述,生成相應的代碼實現。

總結

在傳統(tǒng)開發(fā)中,連接開發(fā)環(huán)境的數據庫就像是穿越千山萬水去約會 – 要配 IP、調防火墻、改配置。但在 Sealos 中,Cursor 和數據庫就像住在隔壁的青梅竹馬,想約就約,連個電話都不用打。這種開發(fā)體驗,不就是我們每個開發(fā)者心中的 “理想型” 嗎?有了這對神仙搭檔,你就可以把更多精力放在實現產品創(chuàng)意上,而不是被繁瑣的環(huán)境配置耗盡耐心。

image

加入 Sealos 開源社區(qū)體驗像個人電腦一樣簡單的云操作系統(tǒng)

??官網鏈接 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

別再浪費時間配置環(huán)境了!這個比 Laf 還牛的云開發(fā)框架,讓我3分鐘搭建完整應用 2024-11-05

image

我一行代碼也沒寫,Cursor 和 Devbox 給我寫了個高仿蘋果官網! 2024-10-28

image

3分鐘部署上線小產品?Cursor 和 Devbox 讓開發(fā)從未如此簡單! 2024-10-29

image

關于 Sealos

Sealos 是一款以 Kubernetes 為內核的云操作系統(tǒng)發(fā)行版。它以云原生的方式,拋棄了傳統(tǒng)的云計算架構,轉向以 Kubernetes 為云內核的新架構,使企業(yè)能夠像使用個人電腦一樣簡單地使用云。

關注 Sealos 公眾號與我們一同成長??????

原文轉載自:https://mp.weixin.qq.com/s/xq9Q7kBX8f_sw_0kUjyC6A

上一篇:

DeepSeekMath:挑戰(zhàn)大語言模型的數學推理極限

下一篇:

通義萬相,開源!
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

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

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

#AI深度推理大模型API

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

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