不想写 sql,花了两周多写了个 AI 生成 SQL 的网页项目 SQLWise,现已开源。

28 天前
 IndieYe

开源地址

https://github.com/IndieYe/sqlwise

截图

项目列表页面

项目页面

DDL 页面

文档页面

规则页面

设置页面

2455 次点击
所在节点    分享创造
24 条回复
falcon05
28 天前
和我直接问 ChatGPT 相比有哪些优势?
Configuration
28 天前
有写 context 的时间,早就把 SQL 写出来了,而且更可靠
IndieYe
28 天前
@falcon05 关键就是上下文的提供吧(提供相关的表跟列定义),现实中的数据库可能比较复杂,比如 1000 个表,一个表 100 字段,字段命名也不规范,甚至有自定义字段 1 之类的命名,那让 ai 如何推断?这个项目就是做了这些比较细致的活,根据提问,查询出相关的表跟列作为上下文,然后提问 ai
IndieYe
28 天前
@Configuration 那就是手撸 sql ,不知道写的会不会比较累,我本来是想找个方式让写 sql 能有类似 cursor 写代码的自动提示体验,但实在找不到,所以做了这么个工具。
功能是有用的,就是不知道是否足够方便
npe
28 天前
直接把 prompt 发出来更好吧
Configuration
28 天前
@IndieYe #4
AI 写出来的你还是得话时间检查、验证。SQL 这种手到擒来的东西想不通为什么要 AI 写
就你贴图中的例子而言,都是些简单的不能再简单的 SQL
falcon05
28 天前
@IndieYe 描述清楚的话是可以的,比如我最近有个项目起手就是这样问的:

mariadb 有一个数据库,用于记录我的短链接网站相关记录和点击量,有两个表一个表是链接信息,表名为 ls_link ,有三个字段为 token 、remark 、 time ,其中 token 是链接的短名或缩略名如 3aysH ,431aa 等,remark 为用户给该记录标记的 title ,time 为添加时间,但使用 timestamp 的数字格式,如 1706687107 。

另外一个表是记录链接被点击的信息,表名为 ls_query_log , 记录每次访问的用户信息,包含 ip 、访问时间等,关键字段为 token ,也就是前面 ls_link 表 token 的字段的值。

现在我要使用 php 获取今年 6 月到今年 11 月每条链接的 remark, token 和点击数,并导出成 csv 在 excel 中查看
Configuration
28 天前
@falcon05 #7
就一条 SQL 语句而已,你看你要喂这么一大段 context 给 AI ?你写着一大段 context 要多长时间?需不需要反复调整 context 两三次才能得出正确的 SQL ?
falcon05
28 天前
@Configuration 没办法我打字快,因为我用五笔,!打字的同时也是对逻辑的梳理,但 ai 写得比我快,而且会用一些 mysql 的特性。
IndieYe
28 天前
@npe 每个任务步骤的 prompt 都能查看,比如这是生成 sql 的:

![image]( https://github.com/user-attachments/assets/c341c326-3df8-4213-b3ad-5a3ed4d26cf7)
serco
28 天前
IndieYe
28 天前
@serco 对的,参考了 vanna ,chat2db ,https://www.sqlai.ai/之类的项目网站。
有几个区别:一个是细到列(考虑到可能一个表几百列,都作为上下文传给 AI 太耗 token 了);另一个是可以维护 AI 备注(就是另外一个备注字段,比如原数据库我们可能没权限为了 ai 生成方便而大量修改字段备注)。
leonhao
28 天前
Datagrip 的自动补齐功能就足够了,AI 生成的无法保证正确性,只能是玩具
IndieYe
28 天前
@serco 另外不用 vanna 就是感觉 vanna 是面向开发者的,默认的网页端 UI 太丑太难用了,所以做了一个面向用户的直接可用的东西
IndieYe
28 天前
@leonhao 我也用 datagrip 作为数据库客户端,的确好用,但手撸 sql 时只有补齐功能没有 AI 功能,用过几个 AI 插件,都不行,写 sql 时干扰太大,都卸了。好像也没搜到有专门给 datagrip 写的 ai 生成 sql 插件。

所以为了提供准确的上下文,我思考了几个可能的来源:
1. 表,列信息
2. 文档信息
3. 生成历史(想当于示例,生成类似的 sql 时会很精确)

然后就尝试做了这么个工具,就是没想到会做这么久。
serco
28 天前
已经执行力很强了,才 2 周时间又不是全职在写。
IndieYe
28 天前
@serco #16 主要是看很多文章教程里,其他人都 1 小时,1 天生成一个项目,不熟悉背后的技术细节,也没碰到任何问题,搞得我怀疑是不是我效率太低了或者用法有问题。
serco
28 天前
@IndieYe 总要吸引眼球的嘛。除非自己对如何实现或者产品细节了如指掌,不然基本不能指望快速生成且调试通过。
idealhs
28 天前
6, 不知道对于业务逻辑的理解能力怎么样。是否可以根据数据库的注释来判断业务逻辑,而不是仅仅根据列名表名?
XTTX
28 天前

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

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

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

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

© 2021 V2EX