
一文講透 AI Agent 與 AI Workflow 的區(qū)別和深度解析:從自動化到智能化的演進
“誒,你這前后端開發(fā)環(huán)境怎么搭建這么快?”“用了 Devbox 啊?!薄安皇前桑阍趺丛?Cursor 里連接開發(fā)環(huán)境的數據庫,這些都配好了?”“對啊,一鍵搞定。”“開玩笑吧?這得配置半天環(huán)境吧?”“不,因為 Devbox 已經幫我們把所有開發(fā)環(huán)境都預配置好了,直接寫代碼就行?!?/p>
這不是科幻電影的對白,而是真實存在的 Sealos Devbox 的功能。今天我就給大家展示一下如何用最簡單的方式,實現開發(fā)環(huán)境與數據庫的無縫協(xié)作。如果你不知道啥是 Devbox,可以看我們之前的文章 ??
我一行代碼也沒寫,Cursor 和 Devbox 給我寫了個高仿蘋果官網!
Sealos 數據庫是一個強大且靈活的數據庫管理平臺,允許用戶在 Sealos 上可視化地管理和使用各種數據庫。并且還提供了一整套高效的工具和機制,使數據庫的管理、擴展、監(jiān)控和故障恢復更加便捷和自動化,適合從開發(fā)到生產的各類場景。
你只需要點點鼠標,就可以創(chuàng)建各種數據庫,而且還是高可用的,你說氣人不氣人。Sealos 數據庫支持豐富的數據庫管理系統(tǒng) (DBMS),包括 MySQL、PostgreSQL、Redis、MongoDB,此外還支持消息隊列 (如 Kafka) 和向量數據庫等,滿足了用戶多種業(yè)務場景的需求。
除此之外,Sealos 數據庫還支持自動故障恢復、靈活的數據備份與恢復機制、數據遷移等等各種特性,這里我就不一一列舉了,感興趣的可以看 Sealos 官方文檔。
首先,我們需要創(chuàng)建一個數據庫。瀏覽器進入 Sealos 桌面:https://hzh.sealos.run 然后打開【數據庫】App。
整個過程非常直觀,只需要按照界面提示一步步操作即可。選擇好配置后,點擊【部署】按鈕,數據庫就會開始創(chuàng)建。等到數據庫狀態(tài)變?yōu)檫\行中以后,點擊左邊的小眼睛圖標,即可看到數據庫的連接信息。
點擊【連接】按鈕,進入數據庫的終端界面。
在終端界面輸入以下命令創(chuàng)建測試數據庫。
CREATE DATABASE testdb;
這時候,基本的數據庫配置就搞定啦。接下來開始創(chuàng)建開發(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。
接著會提示安裝 Devbox 插件,安裝后即可自動連接開發(fā)環(huán)境。
是不是非常簡單?直接省略了配置域名解析、申請 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
接下來我們會創(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
現在你將看到程序對數據庫的一系列操作結果,包括:
輸出大致如下:
還可以繼續(xù)完善和擴展,比如:
添加數據驗證
接口化
你可以繼續(xù)使用 Cursor 的 AI 能力來實現這些功能,通過自然語言描述我們想要實現的功能,它就能幫我們生成相應的代碼。比如,我們可以這樣描述:“幫我實現一個用戶數據的批量導入功能,包含事務處理和錯誤回滾機制?!盋ursor 就會根據我們的描述,生成相應的代碼實現。
在傳統(tǒng)開發(fā)中,連接開發(fā)環(huán)境的數據庫就像是穿越千山萬水去約會 – 要配 IP、調防火墻、改配置。但在 Sealos 中,Cursor 和數據庫就像住在隔壁的青梅竹馬,想約就約,連個電話都不用打。這種開發(fā)體驗,不就是我們每個開發(fā)者心中的 “理想型” 嗎?有了這對神仙搭檔,你就可以把更多精力放在實現產品創(chuàng)意上,而不是被繁瑣的環(huán)境配置耗盡耐心。
加入 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
不會前端也能寫官網?沒問題,Devbox+Cursor 帶你起飛 2024-11-06
別再浪費時間配置環(huán)境了!這個比 Laf 還牛的云開發(fā)框架,讓我3分鐘搭建完整應用 2024-11-05
我一行代碼也沒寫,Cursor 和 Devbox 給我寫了個高仿蘋果官網! 2024-10-28
3分鐘部署上線小產品?Cursor 和 Devbox 讓開發(fā)從未如此簡單! 2024-10-29
Sealos 是一款以 Kubernetes 為內核的云操作系統(tǒng)發(fā)行版。它以云原生的方式,拋棄了傳統(tǒng)的云計算架構,轉向以 Kubernetes 為云內核的新架構,使企業(yè)能夠像使用個人電腦一樣簡單地使用云。
關注 Sealos 公眾號與我們一同成長??????
原文轉載自:https://mp.weixin.qq.com/s/xq9Q7kBX8f_sw_0kUjyC6A