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

1 天前
 IndieYe

开源地址

https://github.com/IndieYe/sqlwise

截图

项目列表页面

项目页面

DDL 页面

文档页面

规则页面

设置页面

1907 次点击
所在节点    分享创造
24 条回复
falcon05
1 天前
和我直接问 ChatGPT 相比有哪些优势?
Configuration
1 天前
有写 context 的时间,早就把 SQL 写出来了,而且更可靠
IndieYe
1 天前
@falcon05 关键就是上下文的提供吧(提供相关的表跟列定义),现实中的数据库可能比较复杂,比如 1000 个表,一个表 100 字段,字段命名也不规范,甚至有自定义字段 1 之类的命名,那让 ai 如何推断?这个项目就是做了这些比较细致的活,根据提问,查询出相关的表跟列作为上下文,然后提问 ai
IndieYe
1 天前
@Configuration 那就是手撸 sql ,不知道写的会不会比较累,我本来是想找个方式让写 sql 能有类似 cursor 写代码的自动提示体验,但实在找不到,所以做了这么个工具。
功能是有用的,就是不知道是否足够方便
npe
1 天前
直接把 prompt 发出来更好吧
Configuration
1 天前
@IndieYe #4
AI 写出来的你还是得话时间检查、验证。SQL 这种手到擒来的东西想不通为什么要 AI 写
就你贴图中的例子而言,都是些简单的不能再简单的 SQL
falcon05
1 天前
@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
1 天前
@falcon05 #7
就一条 SQL 语句而已,你看你要喂这么一大段 context 给 AI ?你写着一大段 context 要多长时间?需不需要反复调整 context 两三次才能得出正确的 SQL ?
falcon05
1 天前
@Configuration 没办法我打字快,因为我用五笔,!打字的同时也是对逻辑的梳理,但 ai 写得比我快,而且会用一些 mysql 的特性。
IndieYe
1 天前
@npe 每个任务步骤的 prompt 都能查看,比如这是生成 sql 的:

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

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

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

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

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

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

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

© 2021 V2EX