V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
adjusted
V2EX  ›  分享创造

我 vibe 了一个新的数据库管理工具

  •  1
     
  •   adjusted ·
    wangzuo · 92 天前 · 3759 次点击
    这是一个创建于 92 天前的主题,其中的信息可能已经有所发展或是发生改变。

    dbx 是一个用 Go 写的数据库管理工具,项目已经在 https://github.com/swiftcarrot/dbx 开源,入手超级简单。

    读取现有数据库

    import (
    	_ "github.com/lib/pq"
    	"github.com/swiftcarrot/dbx/postgresql"
    	"github.com/swiftcarrot/dbx/schema"
    )
    
    db, err := sql.Open("postgres", "postgres://postgres:postgres@localhost:5432/dbx_test?sslmode=disable")
    pg := postgresql.New()
    source, err := pg.Inspect(db)
    

    从零开始用代码创建数据库结构:

    target := schema.NewSchema()
    target.CreateTable("user", func(t *schema.Table) {
    	t.Column("name", "text", schema.NotNull)
    	t.Index("users_name_idx", []string{"name"})
    })
    

    dbx 还能比较两个 schema ,生成数据库改动的 SQL:

    changes, err := schema.Diff(source, target)
    for _, change := range changes {
    	sql, err := pg.GenerateSQL(change)
    	_, err := db.Exec(sql)
    }
    

    因为 postgres 功能多,所以先支持了 postgres 。mysql 也已经照着实现了,不过还有些 bug 在修。大部分代码是用 Claude 3.7 + GitHub Copilot 的 Agent 模式写的,感兴趣可以看看.github 文件夹下面的指导文件。

    我发现这个项目特别适合用语言模型,语言模型写 SQL 很溜,写测试来修 bug 也很简单。想听听大家的反馈,聊聊你们希望一个新的数据库管理项目有哪些功能。这个项目所有功能会一直开源免费,我也想试试 AI 编程还能玩出啥花样。欢迎在评论里聊聊你的想法,或者去 GitHub 仓库 https://github.com/swiftcarrot/dbx 开 issue !

    2 条回复    2025-05-14 00:03:02 +08:00
    mumbler
        1
    mumbler  
       85 天前
    解决什么痛点了
    adjusted
        2
    adjusted  
    OP
       85 天前
    @mumbler 统一的数据库结构管理,除了自动生成 sql ,在一些特殊场景,比如数据库结构可视化也有用
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3906 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:14 · PVG 13:14 · LAX 22:14 · JFK 01:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.