公司主营短信,工作中数据库查询占了很大比例。,我们的操作是,通过navicat连接十多台机器的库,然后连接数据库-输入sql-修改查询条件(如一长串的日期)进行各种查询。,遇上高峰期,客服频频转发问题给我们,例如查下客户为什么没收到短信啦,查询发送记录啦,某个短信通道的发送量,签名统计等等。,
,最让我郁闷的地方,每次手机号、日期、短信通道等条件挨个修改一遍,键盘敲得噼里啪啦,鼠标点的不亦乐乎,别人还以为你有多忙,结果一顿操作猛于虎就查了条数据。,都说打工人苦打工人累。,
,我们就不要把工作耗费在这无意义的机械重复中了,是的,即使快一点也好。,我想到总结常用的sql,写入配置文件。,
,通过网页点击执行这些语句。,在前端,好不容易靠试错发现,可以通过JavaScript的splice函数来对接红框内的查询条件:,
,利用splice实现搜索条件动态添加,这个用法是我蒙的,不知道专业的前端MM怎么做的。,上述内容就是我最初的想法。,虽然研发已经给客服MM做了查询后台,不过不适合我们这种“查询工程师”。,手工DIY一个?,想法挺好,怎么实现呢。,这个不急,骑着毛驴看唱本——走着瞧,日月轮转,上班闲敲棋子,忙改文字,敲敲打打的,在没有其它技术人员支持的情况下,前后端居然调通了。,忽然间,大部分的查询工作,我都可以通过自己的笔记本轻描淡写的“指点江山”了:,
,不管多少个数据库,多少条语句,我都可以写到配置文件中。,前端呢,可以用element-ui的“Cascader 级联选择器”分门别类来添加要执行的sql,
,下图红框内就是“Cascader 级联选择器”效果,选中后会动态出现相关的搜索选项:,
,我们看下展示效果:,
,大体情况就是这样。,怎么实现的,主要介绍2点:,文末上传了所有源码到gitee,有兴趣的同学可以看看,如图,怎么让数据库信息在下拉框中显示呢?,
,首先,每个数据库取个英文名字,写在配置文件里,通过configparser模块读取,
,然后配置前端,一打开页面就获取数据库信息,公司数据库为oracle,并且经过堡垒机,所以用到cx_Oracle和sshtunnel模块,这样就可以在页面下拉框中,自由的进行数据库的连接啦。接下来就是如何添加sql了,请看下面的例子。,1. 怎么在前端看到它,如图,怎么让这条sql在前端显示呢?,
,只需一步, 在messages.vue中添加级联菜单的一级菜单巡检和二级菜单服务器即可,只是显示还不够,每条语句要显示的字段不一样,我们需要单独定义它们。,
,2. 单独定义要显示的表头字段,如上所述,在messages.vue中添加inspect的表头字段,并且设置this.tableLabel = this.inspectLabel。为每条sql语句设置不同的表头字段,赋值给this.tableLabel,这样可以让不同的sql显示不同的字段,3. 动态添加搜索条件,如图,框内的3个搜索条件是通过JavaScript的splice函数生成的。通过它,我们可以为每条语句定义不同的搜索条件。,
,在commonForm.vue中编辑:,接下来是后端操作。,首先,sql取名为“inspect”。config.cfg-[sql] 填写要执行的sql语句,
,old_views.py-read_cfg函数,get_sql函数读取config.cfg中的sql语句,比如读到名为“inspect”的语句,返回的结果是这样的 ['select project,ip,cpu,mem,disk,vda1,vdb1,network,service,url,create_time\nfrom weekly_check\nwhere create_time BETWEEN {1} AND {2}'],然后,对页面提交过来的sql语句进行处理:如修改日期,修改where条件,加上搜索条件等,old_views.py-get_messages(),(('农林牧渔', '172.16.1.6', '2.05', '24.59', '/dev/vda1 used: 7.9G nouse: 30G', '19.75', '74.11', '异常', 'Bootlog: OK'),),这是从数据库返回的数据,类型为元组,需要转成字典并给value加上key,方便前端识别。如{'项目名称': '农林牧渔', 'ip': '172.16.1.6'},old_views.py-foo函数,bar函数,上一步bar()函数主要作用是把从数据库查到的数据转成字典,并给value加上一个key,大概过程:,到这里,一条sql查询就添加完了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。