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

150 天前
 adjusted

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 !

3830 次点击
所在节点    分享创造
2 条回复
mumbler
142 天前
解决什么痛点了
adjusted
142 天前
@mumbler 统一的数据库结构管理,除了自动生成 sql ,在一些特殊场景,比如数据库结构可视化也有用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1129934

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX