基于Trae开发的自动表关联查询工具
对于复杂的一些业务,会涉及很多张表,其间有各种各样的关联关系,在开发&测试过程中,随时需要查看这些表中的数据状态,这种情况下需要我们写一些关联查询的SQL或者多条SQL执行来查看结果,个人感觉用起来还是不太方便,所以想开发一个关联表自动进行查询的工具
后端基于spring boot自行开发;前端部分使用了Trae,让大模型来进行的开发~
服务主要还是本地部署个人使用,为了简化,本地数据库使用了sqlite的文件形式存储,同时采用了将前端项目打包结果复制到后端项目中同步部署,所以没有其他任务外部依赖
在后端项目中启动后,直接访问 http://localhost:8080 即可使用,或者打包后通过 java -jar xxx.jar 执行
注意:
- 需要 jdk 版本大于等于 21
- 只支持MySQL数据库
- 没有做鉴权及SQL注入等处理,所以只建议本地安装个人使用
下面进行一下对应功能介绍
数据源管理
用来管理数据库(MySQL)的连接(需要服务所在的机器可以连接到数据库)

表字段关系管理
这里主要进行字段关系的维护,如果使用了外键的话,会自动进行同步,支持跨库关联

比如员工表(employees)的部门编码字段(dept_no)对应了,部门表(departments)的(dept_no)字段,那么我们可以这样配置(主表可以理解为包含类似外键的表)
其中的关联条件部分,使用场景为一张表根据条件关联不同的表
假设有多张表,它们的操作日志都记录在了一个叫做操作日志的表里面,同时操作日志表有一个类型字段来区分对应的表是哪个,那么我们可以在关联条件中输入对应的条件即可,如(type=1),如果没有这种场景就可以不填写

ER图查看
在创建好数据源以及维护好字段关系后,我们可以通过查看ER图来确认一下配置是否正确,并且也可以让新人快速熟悉表间关系
需要输入一下对应的db和table即可,会查找所有关联的表进行展示,并同时展示关联的字段关系,支持跨库关联

数据查询
最后就是数据的查询,选择db和表后,需要输入对应的查询条件,这时会查询对应的数据,同时会将关联的表和数据同时在下方进行展示(目前限制了单表数据最多10条)
目前是会根据选择的表向外查询关联表,是广度优先,并且对于相同的表只会查询一次,所以选择的表不同,结果可能会有所差异

后续扩展
在有个表关系的ER图后,我们可以比较容易的让大模型来帮助我们根据自然语言来生成查询SQL了
将memaid格式的ER图文本和自然语言提供给大模型即可,这里举一个小例子(langchain):
class ExecutableSql(BaseModel):
"""可执行的SQL信息"""
sql: str = Field(description="查询结果的SQL语句")
def sql_generation(er_diagram: str, description: str, llm: BaseChatModel) -> str:
"""
根据用户的请求,和er图,生成最终的SQL语句
"""
# 构造解析器
parser = PydanticOutputParser(pydantic_object=ExecutableSql)
# 构造提示词模版
prompt = PromptTemplate(
template="根据如何mermaid格式的ER图:\n{er_diagram}\n\n为这个请求生成SQL查询语句:\n{description}\n\n,{format_instructions}\n",
input_variables=["description", "er_diagram"],
partial_variables={"format_instructions": parser.get_format_instructions()},
)
# 将提示此、llm、结果解析器构造成链
chain = prompt | llm | parser
# 使用参数实际调用获取结果
sqlInfo = chain.invoke({"er_diagram": er_diagram, "description": description})
return sqlInfo.sql
这里使用了mysql 例子中的employees数据库来实际看下,生成的ER图如下:

将左侧ER图的文本和问题,如:查询一下员工编号为10002的基本信息、所在部门,以及不同时间对应的薪资情况提供给大模型,可以得到如下结果:
SELECT
e.emp_no,
e.birth_date,
e.first_name,
e.last_name,
e.gender,
e.hire_date,
d.dept_name,
s.salary,
s.from_date AS salary_from_date,
s.to_date AS salary_to_date
FROM employees e
JOIN dept_emp de ON e.emp_no = de.emp_no
JOIN departments d ON de.dept_no = d.dept_no
JOIN salaries s ON e.emp_no = s.emp_no
WHERE e.emp_no = 10002
ORDER BY s.from_date;
我们实际执行一下,获取结果:

基于Trae开发的自动表关联查询工具的更多相关文章
- java 分库关联查询工具类
问题: 由于公司业务扩大,各个子系统陆续迁移和部署在不同的数据源上,这样方便扩容,但是因此引出了一些问题. 举个例子:在查询"订单"(位于订单子系统)列表时,同时需要查询出所关联的 ...
- 基于Nodejs开发的web即时聊天工具
由于公司需要开发web即时聊天的功能,开始时我们主要的实施方法是用jquery的ajax定时(10秒)轮询向服务器请求,由于是轮询请求,对 服务器的压力比较大.我们网站上线的时间不长,访问量不是很大, ...
- 基于SOUI开发一个简单的小工具
基于DriectUI有很多库,比如 Duilib (免费) soui (免费) DuiVision (免费) 炫彩 (界面库免费,UI设计器付费,不提供源码) skinui (免费使用,但不开放源码, ...
- 基于node的cmd迷你天气查询工具
1.前几天网上看到的,于是自己小改了一下,更换了天气查询的接口,当作练习一下node. 2.收获挺大的,捣鼓了一天,终于学会了发布npm包. 3.接下来,就介绍一下这个 mini-tianqi 的主要 ...
- 基于EF的数据外键关联查询
现在很多ORM不自带外键关联的实体查询,比如我查询用户,用时将关联的角色信息查询出来,那么就要进行2次查询,很麻烦.而我现在要做的就是基于EF的外键关联查询.很方便的. 首先,创建基础查询的BaseS ...
- TDSQL“相似查询工具MSQL+”入选VLDB论文
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB发表于云+社区专栏 作者介绍:王晓宇,腾讯数据库TDSQL团队成员,目前参与TDSQL数据库内核研发工 ...
- C# Winform实现手机号码归属地查询工具
摘要:本文介绍使用C#开发基于Winform的手机号码归属地查询工具,并提供详细的示例代码供参考. 一.需求描述 输入正确的手机号码,查询该号码的归属地和其他相关信息. 二.需求分析 1.实现手机号码 ...
- SNF开发平台WinForm-EasyQuery统计分析-效果-非常牛逼的报表查询工具
无论是单轴曲线 .双轴曲线 .柱形图 .饼图 .雷达图 .仪表图.图表引擎全能为您轻松实现.您只需要 3 步操作(数据源准备,设计图表,挂接到您想要展示的位置)便可完成 BI 的设计. 无论是普通报表 ...
- 字节跳动基于ClickHouse优化实践之“多表关联查询”
更多技术交流.求职机会.试用福利,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻.但在字节大量 ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 SharePoint中基于Web开发
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 SharePoint中基于Web开发 之前提到过, ...
随机推荐
- 【返回值】定义泛型JSON
/** * 定义统一的Json结构 * 由于封装的Json数据的类型不确定,所以在定义统一的json结构时,我们需要用到泛型. * 统一的json结构中属性包括:数据.状态码.提示信息即可. * 构造 ...
- vue3 + pnpm 打造一个 monorepo 项目
Monorepo 和 Multirepo 单一仓库(Monorepo)架构,可以理解为:利用单一仓库来管理多个packages的一种策略或手段:与其相对的是多仓库(Multirepo)架构 Monor ...
- 共建共荣金融生态!金融级数字底座“源启”与GoldenDB数据库完成互认证
近日,中电金信金融级数字底座"源启"顺利与金篆信科GoldenDB分布式数据库完成互认证.GoldenDB数据库安全稳定运行在"源启"之上,整体性能表现卓越,进 ...
- 【数据库】MongoDB服务启动失败的问题。
1.确保MongoDB所在文件夹拥有所有权限 2.确保打开CMD窗口是以管理员身份运行的 3.配置文件中的路径应该为完整路径,且不包含空格和特殊字符(不建议包含) systemLog: destina ...
- 【前端】【H5 API】Web存储 Web Storage
Web存储 传统的方式是使用document.cookie来进行存储,但是由于其存储空间有限(大约4KB),并且需要复杂的操作来解析,给开发者带来了诸多不便. 为此,HTML 5规范提出了网络存储的相 ...
- ARGOCD用户管理
1.创建用户alice kubectl apply -f argocd-cm.yaml apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm ...
- Jenkins入门使用
Jenkins入门使用 1先安装jdk才能运行jenkins yum install -y java-1.8.0-openjdk.x86_64 2 安装jenkins,运行,进行端口绑定,启动jenk ...
- Qt编写监控Onvif综合示例(支持云台/预置位/抓图/事件订阅等)
一.功能特点 广播搜索设备,支持IPC和NVR,依次返回. 可选择不同的网卡IP进行对应网段设备的搜索. 依次获取Onvif地址.Media地址.Profile文件.Rtsp地址. 可对指定的Prof ...
- [转]v-mode 提示错误 v-model directives require the attribute value which is valid as LHS.
v-mode总是提示错误 v-model directives require the attribute value which is valid as LHS. 为什么调用过滤总是提示这个错呢? ...
- [转]IDEA2020.2.3中创建JavaWeb工程的完整步骤记录
原文链接: IDEA2020.2.3中创建JavaWeb工程的完整步骤记录