数据库审核工具SQLE接口调用

接上文数据库审核接口SQLE的探索使用,本次自定义接口进行调用,实现需求。

1、创建自定义审核接口

因直接调用SQLE的审核接口,会出现token过期,且审核及结果查询接口是分开的,因此,出于以上2个原因的考虑,重新编写一个接口用于调用SQLE的审核接口并返回审核结果。参考代码如下:


# coding=utf-8
import requests
from flask import request
import json
from flask import Flask
app = Flask(__name__)
@app.route('/audit_task', methods=['post','get'])

def  audit_task():
    get_data = request.args.to_dict()
    v_instance = get_data.get('instance')
    v_schema = get_data.get('schema')
    v_sql = get_data.get('sql')


    v_token = get_token()
    v_headers = {'Authorization': f"{v_token}"}
    #print(v_headers)
    url = 'http://127.0.0.1:10000/v1/tasks/audits'
    v_data_a  = {'instance_name':v_instance,'instance_schema':v_schema,'sql':v_sql}
    #print(v_data_a)
    res = requests.post(url, data=v_data_a, headers=v_headers)
    v_taskid=res.json()['data']['task_id']
    url2='http://127.0.0.1:10000/v1/tasks/audits/'+str(v_taskid)+'{/sqls?page_index=1&page_size=10&no_duplicate=false'
    # print(url2)
    res2 = requests.get(url2,  headers=v_headers)
    audit_result = res2.json()['data'][0]['audit_result']
    if not(audit_result):
        audit_result=f'审核通过'
    return audit_result

def  get_token():
    url = 'http://127.0.0.1:10000/v1/login'
    data = {"username": "admin", "password": "xxxx"}
    # res = requests.post(url, json=data)
    h = {
        'Content-Type': 'application/json; charset=UTF-8'
    }
    res = requests.post(url, data=json.dumps(data), headers=h)
    t = json.loads(res.text)
    #print(type(json.loads(res.text)))
    token = t['data']['token']
    #print(t['data']['token'])
    return token


if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000, debug=True)

注:使用时,需提前在SQLE中配置好实例信息。SQLE部署方式及简单配置可参考

数据库审核工具SQLE部署及使用

2. 调用测试

运行以上接口,并使用postman调用进行测试

输入参数名特地调整了一下,以便于区别,测试情况如下

调用结果如下:


[error]除了自增列及大字段列之外,每个列都必须添加默认值
[error]表必须有主键
[error]新建表必须加入if not exists create,保证重复执行不报错

与上一篇结果一致,且 无需调用2次接口。

本文转载于网络 如有侵权请联系删除

相关文章

  • 自动驾驶的「圈地运动」何时了?

    文丨智能相对论(aixdlun)作者丨陈选滨自动驾驶频频「现身」国际盛会,是“定点发力”还是“纯秀肌肉”?不知从何时开始,自动驾驶就好似突然“觉醒”了一般,开始频频「现身」国际盛会的现场,成为了各大主办方、技术厂商乃至国家展示科技创新能力的一个重要手段。 在东京奥运会前后,丰田的自动驾驶就成功借此盛会走入了国际视野。丰田公司不仅为东京奥运会提供了大量的自动驾驶车辆以供活动使用,还由此在东京御台场开启了L4级的自动驾驶车辆的商业化运营。时间来到北京冬奥会,自动驾驶在中国的会场上更是迎来全面开花的多维度应用。最瞩目的莫过于百度Apollo的汽车机器人,作为火炬手成功完成了一段800米的火炬传递。紧随其后,美团、新石器、智行者、优必选、九号公司、北汽集团等厂商的自动驾驶产品都相继在北京首钢园区落地,承担起接驳、送餐、安保、清洁等一系列服务工作。类似的,不管是今年已经召开了的博鳌论坛,还是延期了的杭州亚运会,都曾不约而同地将自动驾驶技术展示与服务作为活动宣发的重点,像文远知行、吉利汽车等国内知名技术厂商也都纷纷抓住了诸如此类走上国际舞台的机会,与活动主办方开展合作,加速自家的自动驾驶技术解决方

  • LeetCode – Jump Game

    大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。一開始想DP一步步迭代更新,求出跳到最后一个的最小步数,可是时间复杂度O(nk),会超时。再一想,发现该题仅仅须要返回是否能到达最后一个,不须要最小步数,所以迭代时候仅仅须要保留当前可以走到的最远距离tmpMax,时间复杂度降到O(n)。classSolution{ public: constintMAXVALUE=1<<30; boolcanJump(intA[],intn){ inttmpMax=0; if(n==1) returntrue; for(inti=0;i<n-1;i++) { if(i>tmpMax)returnfalse; if(tmpMax<i+A[i]) tmpMax=i+A[i]; if(tmpMax>=n-1) returntrue; } returnfalse; } };复制发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118467.html原

  • 企业架构 | 绕不开的微服务

    你好,我是悟空呀~在很多程序员的大脑中,都会有这样一个打怪升级的路径:曾经,我对这个路径深信不疑,现在想想,也许是因为初出茅庐的我所看到的江湖太小。慢慢地,在江湖中久了、视野开了,就发现自己想得太简单了。第1个对“架构师”的定义十多年前,在我初入江湖的时候,首先进入了一家位于深圳的大型软件公司,研发人员的规模上千。面试我的人据说是公司中的架构师,我当时心里真的是对这个架构师充满了仰慕之情,以至于至今我都依稀能够回忆起他的容貌和声音。当时的后端主流技术是Struts+Spring+Hibernate,也就是当时业内常说的SSH;前端的主流技术是HTML+jQuery+原生JS。那时还没有管理jar包依赖的maven,也没有开箱即用的SpringBoot,如果在新的项目中要将上述技术整合起来供开发人员适用,往往需要几天甚至几周的时间,而这些工作都是架构师的职责。于是,我给架构师下了第一个定义:架构师就是把各种框架整合到一个项目中,提供通用的代码,支撑开发人员完成业务功能的开发及提供必要的技术支持的人。后来我回到了西安,此时的我,凭借自身的不断努力,已经将上述的几个技术掌握的很好了。在西安的

  • Python判断相等

    判断相等方法有好几个:==、is、 isinstance、issubclass、operator模块。== :两个对象内容是否相等。>>>a=[22,44] >>>b=[22,44] >>>a==b True >>>c=1 >>>d=2 >>>c==d Falseis:对象占用的内存地址是否一样,通过id方法可以知道内存地址是否一样。>>>a=(1,2,3) >>>b=a >>>aisb True >>>c=(1,2,3) >>>d=(1,2,3) >>>cisd False >>>isinstance:isinstance(object,classinfo)如果对象参数是classinfo参数的一个实例,或者是一个(直接的、间接的或虚拟的)子类,则返回true,否则false。classinfo可能是一类对象的元组,在这种情况下,classinfo中的每

  • Tomcat7 1000 并发量配置以及配置优化

    作者:_NullPointer 出处:https://www.cnblogs.com/renwei/首先,修改tomcat/conf/server.xml配置文件。 <Executorname="tomcatThreadPool"namePrefix="catalina-exec-" maxThreads="500"minSpareThreads="400"/> <Connectorexecutor="tomcatThreadPool" port="80"protocol="HTTP/1.1" connectionTimeout="20000"enableLookups="false" redirectPort="8443"URIEncoding="UTF-8"acceptCount="1000"/>复制其次,修改tomca

  • HCIP笔记 | IS-IS 协议 中间系统到中间系统(二)

    IS-IS协议路由聚合IS-IS也能够通过路由聚合来减少路由条目。isis summary10.0.1.0255.255.255.252level-1复制IS-IS有两种缺省路由第一种缺省路由是由level-1路由器在特定条件下自动产生的,它的下一跳是离它最近的(cost最小)level-1-2路由器。第二种缺省路由是IS-IS路由器上使用default-route-advertise命令产生并发布的。isis default-route-advertisematchdefaultlevel-1-2复制IS-IS路由引入IS-IS网络能够引入其他路由协议的路由和其他IS-IS协议进程的路由。默认情况下,IS-IS总是以level-2路由类型引入外部路由。但是,通过手动配置,也可以以level-1路由类型引入外部路由。isis import-routeospf1level-1cost-typeinternalcost30复制IS-IS路由过滤使用filter-policy工具对IS-IS路由进行过滤route-policy10denynode2 if-matchipnext-hopacl

  • Matlab基础题总结和习题提示

    安装与使用说明:https://blog.csdn.net/zhangrelay/article/details/79622079网页版本:https://blog.csdn.net/zhangrelay/article/details/79529824浓缩指令备忘录和习题提示:下载链接::https://share.weiyun.com/5XlV19a密码:ebu4qp推荐使用新版Matlab,如2017a、2017b等。中文官网:http://cn.mathworks.com/ 中文论坛:http://www.ilovematlab.cn/forum.php 帮助文档:http://cn.mathworks.com/help/对应实验1到实验8:Matlab习题提示: 实验1: %1.1 clc; %1.2 x0=10;v0=15;a=-9.84;t=5; x=x0+v0*t+0.5*a*t.^2; disp(x) %1.3lnlog()loglog10()180=pix.*xx*x z1=2*sin(pi*85/180)/(1+exp(2)) x=[21+2i;-0.455]

  • AI规则迎来进化:从“阿西莫夫三原则”到“李彦宏四原则”

    在硅谷久负盛名的波士顿机器人旗下的四足机器人,即将在明年量产,进入家庭场景。机器人正在离我们越来越近,很多人看完波士顿机器人的各种视频,都后背发凉:这么强大的机器人,放到家里,走在路上,伤害人类怎么办?很多机器人的体积是人类的好几倍,看上去比人类强大很多。 这样的忧虑前人早已考虑到,早在1040年,科幻作家阿西莫夫就针对机器人提出了著名的“机器人三原则”,目的是要避免人类被机器人伤害,机器人三原则如下:第一条:机器人不得伤害人类,或看到人类受到伤害而袖手旁观.第二条:机器人必须服从人类的命令,除非这条命令与第一条相矛盾。第三条:机器人必须保护自己,除非这种保护与以上两条相矛盾。简单地说,机器人永远不能伤害人类、也不能听从人类命令去伤害人类,如有必要则牺牲自己。正是因为机器人行业遵循三原则进行研发,因此机器人一直不断进化,而在这个过程上很少听说有机器人伤害人类的情况。不过,如果我们将无人车也视作机器人,关于自动驾驶伤害人类的新闻也不是没有,特斯拉Autopilot、Uber无人车,都发生过事故,这足以让人们警醒。由此可见机器人三原则,在AI高速发展的今天已经不够用了。或许正是因为此,中国

  • 千呼万唤始出来,谷歌无人驾驶汽车或将量产

    一年前,谷歌就展示了GoogleX实验室研发中最新型的无人驾驶原型车,小巧的体积以及萌萌哒的外观备受青睐。据悉,谷歌增加这款无人驾驶汽车的产量为了让谷歌无人车驾驶团队更加了解汽车生产的全过程,为日后抢占无人驾驶汽车的市场打下基础。据9月13日消息,GoogleX实验室政策部门负责人SarahHunter日前透露,谷歌目前计划生产至少“数百辆”一年前展示的新款无人驾驶汽车,并暗示未来可能量产。自2009年,科技巨头谷歌就把目光放在不需要驾驶者就能启动、行驶以及停止的汽车上。所以,可以说谷歌是当之无愧的无人驾驶汽车开发的“领军人”,力争使无人驾驶汽车实用化。谷歌公司表示,谷歌无人驾驶汽车未来会朝着减少交通拥堵和改进驾车体验的方向不断改进,通过根据最近的交通状况选择线路和完全接管驾车工作,无人驾驶技术能缩短通勤时间,使用户更好地享受通勤时间。谷歌还表示,到2020年,无人驾驶汽车不仅会普及,还有望成为标配。不过,谷歌能否凭一己之力大批量生产无人驾驶汽车还是一个问题。它最终可能需要依靠传统汽车厂商批量生产,早前有传言称,谷歌正在与包括通用汽车和福特在内的数家大型汽车公司洽谈合作,不过谷歌方面并

  • 重磅推出:Openshift实战视频展示系列2&3&4

    针对Openshift,大卫的同事任龙飞归纳了六个使用场景,并录制了六个视频。视频中,操作的步骤非常详细,清晰。视频分别是:1基于Jenkins实现跨数据中心的一键应用部署2基于githubwebhook自动触发应用构建部署3OpenShift应用开发-在线部署更新4OpenShift应用开发-在线调试5.跨数据中心数据同步6.弹性扩展大卫会将六个视频按顺序依次推送。一、视频2:基于githubwebhook自动触发应用构建部署视频内容二、视频3:OpenShift应用开发-在线部署更新视频内容三、视频4:OpenShift应用开发-在线调试视频中,操作的步骤非常详细,清晰。视频分别是:1基于Jenkins实现跨数据中心的一键应用部署2基于githubwebhook自动触发应用构建部署3OpenShift应用开发-在线部署更新4OpenShift应用开发-在线调试5.跨数据中心数据同步6.弹性扩展大卫会将六个视频按顺序依次推送。一、视频2:基于githubwebhook自动触发应用构建部署视频内容二、视频3:OpenShift应用开发-在线部署更新视频内容三、视频4:OpenShift

  • HDUOJ --2544最短路(基础)

    输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。 输入保证至少存在1条商店到赛场的路线。Output对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间SampleInput211233312523531200SampleOutput32SourceUESTC6thProgrammingContestOnline 代码:基于数组(时间复杂度为O(n^2))1#include<stdio.h> 2#include<string.h> 3constintinf=0x3f3f3f3f; 4intpath[101]; 5intsta[101][101],lowcost[101]; 6voidDijkst

  • 删除 WordPress 导航菜单的多余 CSS 选择器(id或class)

    在默认情况下,WordPress的导航菜单会输出很多如menu-item、menu-item-type-taxonomy、menu-item-object-category等加上id组成的CSS选择器,无疑,对于一些人来说,这些选择器导致整个html格式变得难看,看着碍眼的东西最好是将它去掉,之前Jeff也曾有过一篇类似的文章《删除WordPress导航菜单的多余CSS选择器》,今天则介绍个通过添加过滤器来删除WordPress导航菜单的多余CSS选择器(id或class)的新方法。如本站DeveWork.com的导航菜单的相关CSS代码如下:要删除WordPress导航菜单的多余CSS选择器(id或class),则需要在主题的functions.php文件下加入以下代码:add_filter('nav_menu_css_class','my_css_attributes_filter',100,1); add_filter('nav_menu_item_id','my_css_attributes_filter&#

  • 钉钉小程序开发一则趟坑日记(js写不顺溜导致的)_js里的作用域

      其实本文没有存在的必要,写js的时候要注意this关键字。在代码有多个层级时最里层方法里的this是代表方法本身,不是代表当前页面。这个不是当前页面范围内是同一对象。 所以刚看到上面的写法的时候很好奇,慢慢才理解为什么这么写。 没学过js,依样画葫芦也做了回钉钉小程序。目前已上线。   +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "作者:" 数据酷软件工作室 "出处:" http://datacool.cnblogs.com "专注于CMS(综合赋码系统),MES,WCS(智能仓储设备控制系统),WMS,商超,桑拿、餐饮、客房、足浴等行业收银系统的开发,15年+从业经验。因为专业,所以出色。" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • .NET 工作流: Slickflow开源工作流引擎基础介绍(八) -- 自动化任务调度实现介绍

    前言:审批流程中常见的都是人工类型任务,但是也会有一些自动化的任务需要定时触发。因此,引擎框架中需要解决掉两个问题:选择合适的任务调度框架,集成新的任务调度模块。 1.任务调度框架选择 Hangfire是一个开源的.NET任务调度框架,目前1.6+版本已支持.NETCore。 基于队列的任务处理(Fire-and-forgetjobs)延迟任务执行(Delayedjobs)定时任务执行(Recurringjobs)延续性任务执行(Continuations) Hangfire用的是开源的NCrontab组件,通过Cron表达式语法,可以指定非常灵活的定时任务类型。 1)官方网站地址 https://www.hangfire.io/2) ASP.NET网站支持http://docs.hangfire.io/en/latest/installation.html包括安装和部署,数据库设置等。安装步骤说明:http://docs.hangfire.io/en/latest/installation.html3) 数据库   在HangFire的NuGet包安装过程中,HangFir

  • LBP特征

    LBP(LocalBinaryPattern)局部二值特征是一种纹理描述子,它度量和提取图像的局部纹理信息,对旋转和光照具有不变性。单纯的LBP记录像素点与像素点的 对比信息。LBP算子定义为在3*3窗口内,以窗口中心像素为阈值,将相邻的八个像素与其进行比较,若周围像素值大于中心像素值,则该点的标记为1,否则为0。 这样,3*3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数,即LBP码,共256种),即得到该窗口中心像素点的LBP值,并以此反映该区域的 纹理信息。如下例: 二进制数11110001的顺序并无硬性要求,只要在同一处理中保持相同顺序即可。LBP算子可以取多个周围像素点和采样半径。 人之为学有难易乎

  • 005-mapstruct使用

    环境搭建 要映射的类型   处理类型不一致的问题     上图中,INSTANCE类型声明必不可少,不然,生成的代码里面将只有new新的类型,而不会生成赋值的代码;  验证,通过maven编译后,看生成的实现类  

  • idea中Terminal终端中使用Git命令

    打开idea-->file-->settings-->Tools-->Terminal找到Shellpath一栏 将Shellpath更改为Git安装路径中的bin/目录下的bash.exe即可

  • Net Core中数据库事务隔离详解——以Dapper和Mysql为例

    NetCore中数据库事务隔离详解——以Dapper和Mysql为例 事务隔离级别 准备工作 Readuncommitted读未提交 Readcommitted读取提交内容 Repeatableread(可重读) Serializable序列化 总结 事务隔离级别 .NETCore中的IDbConnection接口提供了BeginTransaction方法作为执行事务,BeginTransaction方法提供了两个重载,一个不需要参数BeginTransaction()默认事务隔离级别为RepeatableRead;另一个BeginTransaction(IsolationLevelil)可以根据业务需求来修改事务隔离级别。由于Dapper是对IDbConnection的扩展,所以Dapper在执行增删除改查时所有用到的事务需要由外部来定义。事务执行时与数据库之间的交互如下: 从WireShark抓取的数据包来看程序和数据交互步骤依次是:建立连接-->设置数据库隔离级别-->告诉数据库一个事务开始-->执行数据增删查改-->提交事务--&g

  • 深入分析 Java 中的中文编码问题

    几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元——byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。我们可以把计算机能够理解的语言假定为英语,其它语言要能够在计算机中使用必须经过一次翻译,把它翻译成英语。这个翻译的过程就是编码。所以可以想象只要不是说英语的国家要能够使用计算机就必须要经过编码。这看起来有些霸道,但是这就是现状,这也和我们国家现在在大力推广汉语一样,希望其它国家都会说汉语,以后其它的语言都翻译成汉语,我们可以把计算机中存储信息的最小单位改成汉字,这样我们就不存在编码问题了。 所以总的来说,编码的原因可以总结为: 计算机中存储信息的最小单元是一个字节即8个bit,所以能表示的字符范围是0~255个 人类要表示的符号太多,无法用一个字节来完全表示 要解决这个矛盾必须需要一个新的数据结构char,从char到byte必须编

  • 网络命令工具ifconfig研究报告

    Linuxifconfig命令用于显示或设置网络设备。 ifconfig可设置网络设备的状态,或是显示目前的设置 参数说明: add<地址>设置网络设备IPv6的IP地址。 del<地址>删除网络设备IPv6的IP地址。 down关闭指定的网络设备。 <hw<网络设备类型><硬件地址>设置网络设备的类型与硬件地址。 io_addr<I/O地址>设置网络设备的I/O地址。 irq<IRQ地址>设置网络设备的IRQ。 media<网络媒介类型>设置网络设备的媒介类型。 mem_start<内存地址>设置网络设备在主内存所占用的起始地址。 metric<数目>指定在计算数据包的转送次数时,所要加上的数目。 mtu<字节>设置网络设备的MTU。 netmask<子网掩码>设置网络设备的子网掩码。 tunnel<地址>建立IPv4与IPv6之间的隧道通信地址。 up启动指定的网络设备。 -broadcast<地址>将要送往指定地址的数

  • sqlalchemy backref解释

    https://www.zhihu.com/question/38456789   比较好理解的解释:  

相关推荐

推荐阅读