基于SQL语句的软件生成方法、装置、设备及介质转让专利

申请号 : CN202211151003.6

文献号 : CN115481137B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李天仕

申请人 : 深圳市沃享科技有限公司

摘要 :

本发明公开了一种基于SQL语句的软件生成方法、装置、设备及介质,涉及编程领域。本发明过对SQLC工具原始代码的进行修改,使得修改后的SQLC工具可直接生成与SQL语句对应的程序软件(具有相同查询功能),无需技术人员进行人员编写程序代码,仅编写SQL语句即可降低了工作量,使得sql语句的数据库查询功能可快速面向用户并被用户所使用,将技术人员从重复的工作中解放出来,增强了生产效率。

权利要求 :

1.一种基于SQL语句的软件生成方法,其特征在于,所述基于SQL语句的软件生成方法包括以下步骤:接收SQL语句文件;

根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;

基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件;

其中,所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤包括:将所述SQL语句加载至预设的SQLC工具;

通过所述SQLC工具生成与所述SQL语句对应的所述查询数据库函数;

其中,所述SQL语句文件对应有表约束文件,在所述通过所述SQLC工具生成与所述SQL语句对应的查询数据库函数的步骤之前,所述方法包括:基于所述表约束文件或/和所述SQLC工具的规范对所述SQL语句进行校验,以判断所述SQL语句是否存在语法错误;

当判定所述SQL语句不存在语法错误时,执行所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤;

其中,所述基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件的步骤包括:根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件;

将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件;

其中,所述预设Protobuf格式文件包括多个Protobuf文件模板,所述根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件的步骤包括:基于所述SQL语句的特征量从所述预设Protobuf格式文件中匹配与所述SQL语句对应的目标Protobuf文件模板,所述SQL语句的特征量为SQL语句中输入参数/输出参数的数据类型,或各输入参数/输出参数的数量;

将所述目标Protobuf文件模板作为所述Protobuf文件;

其中,所述将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件的步骤包括:将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板得到与所述程序软件对应的程序代码;

对所述程序代码进行编译生成所述程序软件,并通过所述Protobuf文件和所述SQL语句生成与所述程序软件对应的地址接口,以使所述程序软件可被获取使用。

2.如权利要求1所述的基于SQL语句的软件生成方法,其特征在于,所述判断所述SQL语句是否存在语法错误的步骤之后,所述包括:当判定所述SQL语句存在语法错误时,输出所述SQL语句文件中的SQL语句存在语法错误无法正常生成程序软件的提示信息。

3.一种基于SQL语句的软件生成装置,其特征在于,所述基于SQL语句的软件生成装置包括:接收模块,用于接收SQL语句文件;

第一生成模块,用于根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;

第二生成模块,用于基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件;

其中,所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤包括:将所述SQL语句加载至预设的SQLC工具;

通过所述SQLC工具生成与所述SQL语句对应的所述查询数据库函数;

其中,所述SQL语句文件对应有表约束文件,在所述通过所述SQLC工具生成与所述SQL语句对应的查询数据库函数的步骤之前,包括:基于所述表约束文件或/和所述SQLC工具的规范对所述SQL语句进行校验,以判断所述SQL语句是否存在语法错误;

当判定所述SQL语句不存在语法错误时,执行所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤;

其中,所述基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件的步骤包括:根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件;

将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件;

其中,所述预设Protobuf格式文件包括多个Protobuf文件模板,所述根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件的步骤包括:基于所述SQL语句的特征量从所述预设Protobuf格式文件中匹配与所述SQL语句对应的目标Protobuf文件模板,所述SQL语句的特征量为SQL语句中输入参数/输出参数的数据类型,或各输入参数/输出参数的数量;

将所述目标Protobuf文件模板作为所述Protobuf文件;

其中,所述将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件的步骤包括:将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板得到与所述程序软件对应的程序代码;

对所述程序代码进行编译生成所述程序软件,并通过所述Protobuf文件和所述SQL语句生成与所述程序软件对应的地址接口,以使所述程序软件可被获取使用。

4.一种基于SQL语句的软件生成设备,其特征在于,所述基于SQL语句的软件生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于SQL语句的软件生成程序,所述基于SQL语句的软件生成程序被所述处理器执行时实现如权利要求1至2中任一项所述的基于SQL语句的软件生成方法的步骤。

5.一种介质,其特征在于,所述介质上存储有基于SQL语句的软件生成程序,所述基于SQL语句的软件生成程序被处理器执行时实现如权利要求1至2中任一项所述的基于SQL语句的软件生成方法的步骤。

说明书 :

基于SQL语句的软件生成方法、装置、设备及介质

技术领域

[0001] 本发明涉及编程领域,尤其涉及一种基于SQL语句的软件生成方法、装置、设备及介质。

背景技术

[0002] 在IT(Internet Technology)行业的实际生产应用中,技术人员在使用Go语言(The Go Programming Language,一种程序语言)编写数据库操作(如数据库查询)代码十分不友好。database/sql(sql数据库,sql,Structured Query Language,结构化查询语言)标准库提供的都是比较底层的接口。技术人员需要编写大量重复的实现查询功能的代码。而且大量的模板代码不仅写起来烦,而且还容易出错。而基于Go语言编写得到的实现查询功能的代码不能直接面向用户且被用户所使用。
[0003] 故目前亟需一种快速实现sql数据库查询功能面向用户并被用户所使用的方法。
[0004] 上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

[0005] 本发明的主要目的在于提供一种基于SQL语句的软件生成方法、装置、设备及介质,旨在解决如何快速实现sql语句的数据库查询功能面向用户并被用户所使用的技术问题。
[0006] 为实现上述目的,本发明提供一种基于SQL语句的软件生成方法,所述基于SQL语句的软件生成方法包括以下步骤:
[0007] 接收SQL语句文件;
[0008] 根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;
[0009] 基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件。
[0010] 进一步的,所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤包括:
[0011] 将所述SQL语句加载至预设的SQLC工具;
[0012] 通过所述SQLC工具生成与所述SQL语句对应的所述查询数据库函数。
[0013] 进一步的,所述SQL语句文件对应有表约束文件,在所述通过所述SQLC工具生成与所述SQL语句对应的查询数据库函数的步骤之前,所述方法包括:
[0014] 基于所述表约束文件或/和所述SQLC工具的规范对所述SQL语句进行校验,以判断所述SQL语句是否存在语法错误;
[0015] 当判定所述SQL语句不存在语法错误时,执行所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤。
[0016] 进一步的,所述基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件的步骤包括:
[0017] 根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件;
[0018] 将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件。
[0019] 进一步的,所述预设Protobuf格式文件包括多个Protobuf文件模板,所述根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件的步骤包括:
[0020] 基于所述SQL语句的特征量从所述预设Protobuf格式文件中匹配与所述SQL语句对应的目标Protobuf文件模板;
[0021] 将所述目标Protobuf文件模板作为所述Protobuf文件。
[0022] 进一步的,所述将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件的步骤包括:
[0023] 将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板得到与所述程序软件对应的程序代码;
[0024] 对所述程序代码进行编译生成所述程序软件,并通过所述Protobuf文件和所述SQL语句生成与所述程序软件对应的地址接口,以使所述程序软件可被获取使用。
[0025] 进一步的,所述判断所述SQL语句是否存在语法错误的步骤之后,所述包括:
[0026] 当判定所述SQL语句存在语法错误时,输出所述SQL语句文件中的SQL语句存在语法错误无法正常生成程序软件的提示信息。
[0027] 此外,为实现上述目的,本发明还提供一种基于SQL语句的软件生成装置,所述基于SQL语句的软件生成装置包括:
[0028] 接收模块,用于接收SQL语句文件;
[0029] 第一生成模块,用于根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;
[0030] 第二生成模块,用于基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件。
[0031] 此外,为实现上述目的,本发明还提供一种基于SQL语句的软件生成设备,所述基于SQL语句的软件生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于SQL语句的软件生成程序,所述基于SQL语句的软件生成程序被所述处理器执行时实现如上述的基于SQL语句的软件生成方法的步骤。
[0032] 此外,为实现上述目的,本发明还提供一种介质,所述介质上存储有基于SQL语句的软件生成程序,所述基于SQL语句的软件生成程序被处理器执行时实现如上述的基于SQL语句的软件生成方法的步骤。
[0033] 本发明实施例提出的一种基于SQL语句的软件生成方法、装置、设备及介质,经过修改的SQLC工具,将接收SQL语句文件;根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件。即在本发明中,将借助原生SQLC工具,并对SQLC工具源代码进行修改,在SQLC工具生成与SQL语句对应的查询数据库函数之后,再将生成的查询数据库函数与预设通用代码模板结合即可得到具有与SQL语句相同功能的程序软件,而生成的程序软件可满足非技术人员数据查询需求。可以理解的是,本发明通过对SQLC工具原始代码的进行修改,使得修改后的SQLC工具可直接生成与SQL语句对应的程序软件(具有相同查询功能),无需技术人员进行人员编写程序代码,仅编写SQL语句即可降低了工作量,使得sql语句的数据库查询功能可快速面向用户并被用户所使用,将技术人员从重复的工作中解放出来,增强了生产效率。

附图说明

[0034] 图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
[0035] 图2为本发明基于SQL语句的软件生成方法中第一实施例的流程示意图;
[0036] 图3为本发明基于SQL语句的软件生成方法中第二实施例的流程示意图;
[0037] 图4为本发明基于SQL语句的软件生成方法中第三实施例的流程示意图;
[0038] 图5为本发明基于SQL语句的软件生成方法涉及的装置结构示意图。
[0039] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0040] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0041] 本发明实施例的主要解决方案是:接收SQL语句文件;根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件。
[0042] 由于现有技术不能快速实现sql语句的数据库查询功能面向用户并被用户所使用的技术问题。
[0043] 本发明提供一种解决方案,通过对SQLC工具原始代码的进行修改,使得修改后的SQLC工具可直接生成与SQL语句对应的程序软件(具有相同查询功能),无需技术人员进行人员编写程序代码,仅编写SQL语句即可降低了工作量,使得sql语句的数据库查询功能可快速面向用户并被用户所使用,将技术人员从重复的工作中解放出来,增强了生产效率。
[0044] 如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
[0045] 本发明实施例设备可以是PC,也可以是智能手机、平板电脑、便携计算机等具有数据接收、数据处理和数据发送功能的电子终端设备。
[0046] 如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。
用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口
1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI‑FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non‑volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器
1001的存储装置。
[0047] 可选地,设备还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0048] 本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0049] 如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于SQL语句的软件生成程序。
[0050] 在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于SQL语句的软件生成程序,并执行以下操作:
[0051] 接收SQL语句文件;
[0052] 根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;
[0053] 基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件。
[0054] 进一步地,处理器1001可以调用存储器1005中存储的基于SQL语句的软件生成程序,还执行以下操作:
[0055] 所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤包括:
[0056] 将所述SQL语句加载至预设的SQLC工具;
[0057] 通过所述SQLC工具生成与所述SQL语句对应的所述查询数据库函数。
[0058] 进一步地,处理器1001可以调用存储器1005中存储的基于SQL语句的软件生成程序,还执行以下操作:
[0059] 所述SQL语句文件对应有表约束文件,在所述通过所述SQLC工具生成与所述SQL语句对应的查询数据库函数的步骤之前,所述方法包括:
[0060] 基于所述表约束文件或/和所述SQLC工具的规范对所述SQL语句进行校验,以判断所述SQL语句是否存在语法错误;
[0061] 当判定所述SQL语句不存在语法错误时,执行所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤。
[0062] 进一步地,处理器1001可以调用存储器1005中存储的基于SQL语句的软件生成程序,还执行以下操作:
[0063] 所述基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件的步骤包括:
[0064] 根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件;
[0065] 将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件。
[0066] 进一步地,处理器1001可以调用存储器1005中存储的基于SQL语句的软件生成程序,还执行以下操作:
[0067] 所述预设Protobuf格式文件包括多个Protobuf文件模板,所述根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件的步骤包括:
[0068] 基于所述SQL语句的特征量从所述预设Protobuf格式文件中匹配与所述SQL语句对应的目标Protobuf文件模板;
[0069] 将所述目标Protobuf文件模板作为所述Protobuf文件。
[0070] 进一步地,处理器1001可以调用存储器1005中存储的基于SQL语句的软件生成程序,还执行以下操作:
[0071] 所述将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件的步骤包括:
[0072] 将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板得到与所述程序软件对应的程序代码;
[0073] 对所述程序代码进行编译生成所述程序软件,并通过所述Protobuf文件和所述SQL语句生成与所述程序软件对应的地址接口,以使所述程序软件可被获取使用。
[0074] 进一步地,处理器1001可以调用存储器1005中存储的基于SQL语句的软件生成程序,还执行以下操作:
[0075] 所述判断所述SQL语句是否存在语法错误的步骤之后,所述包括:
[0076] 当判定所述SQL语句存在语法错误时,输出所述SQL语句文件中的SQL语句存在语法错误无法正常生成程序软件的提示信息。
[0077] 参照图2,本发明基于SQL语句的软件生成方法中第一实施例,所述基于SQL语句的软件生成方法包括:
[0078] 步骤S10,接收SQL语句文件;
[0079] 在本实施例中,上述SQL语句文件中包括用于实现数据库查询功能的SQL语句。通常情况下技术人员可自行编辑SQL语句进行对数据库进行相关的数据查询,但是通过SQL语句实现查询功能还存在一定的技术门槛。对于非技术人员来说,需要借助经过技术人员包装转换的查询软件才能满足自身的数据查询需求。可以理解的是,技术人员在编辑实现SQL语句查询功能的软件代码时,需要使用其他程序语言,例如Go语言,使用Go语言编写数据库操作代码对技术人员来说十分不友好,需要编写大量重复的代码,而且也容易出错,而且技术人员除了需要编写SQL语句对应的Go语言代码外,还需要编写对应软件框架,才能得到可被非技术人员使用的工具,这对技术人员来说无疑是重复劳动且需要花费较长的时间和精力。而在本实施例中,将实现SQL语句对应功能的程序软件自动生成。首先,将接收实现查询功能的SQL语句文件,SQL语句文件中的SQL语句是实现查询功能的基础,也是在本实施例中,作为生成具有数据查询功能软件的依据。
[0080] 步骤S20,根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;
[0081] 进一步的,将所述SQL语句加载至预设的SQLC工具;通过所述SQLC工具生成与所述SQL语句对应的所述查询数据库函数。
[0082] 具体的,上述SQLC(Structured Query Language Compiler,SQL编译器)工具为SQL语句的编译器,通过SQLC工具可将SQL语句编译成对应的Go语言程序代码,该程序代码即为查询数据库函数。且得到的查询数据库函数实现的功能与SQL语句相同。具体将SQL语句加载至SQLC工具中即可由SQLC工具自动生成对应的Go语言代码。而且目前的原生SQLC工具具备有将SQL语句编译成Go语言代码的功能,故此处将不再赘述。此外,需要说明的是,由原生SQLC工具生成的Go语言代码即上述查询数据库函数仅仅是实现SQL语句查询功能的部分代码,并非是完整的程序软件。故基于通过原生SQLC工具生成的Go语言代码或者上述查询数据库函数依然需要技术人员编写完整的程序软件。
[0083] 步骤S30,基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件。
[0084] 进一步的,根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件;将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件。
[0085] 进一步的,所述预设Protobuf格式文件包括多个Protobuf文件模板,所述根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件的步骤包括:基于所述SQL语句的特征量从所述预设Protobuf格式文件中匹配与所述SQL语句对应的目标Protobuf文件模板;将所述目标Protobuf文件模板作为所述Protobuf文件。
[0086] 具体的,在本实施中,上述预设的SQLC工具实际为基于原生SQLC工具修改得到。在原生SQLC工具中添加了生成protobuf(Google Protocol Buffers,是Google提供一个具有高效的协议数据交换格式工具库,在本实施例中,将被用生成程序软件的http(HyperText Transfer Protocol,超文本传送协议)接口)文件的代码,以及部分通用模板函数,例如:web(World Wide Web,万维网)框架、数据库框架、main函数(主函数)等得到上述预设的SQLC工具,同时预设的SQLC工具也具有原生SQLC工具生成与SQL语句对应的查询数据库函数功能。在通过预设的SQLC工具生成查询数据库函数功能后,基于SQL语句的特征量从预设Protobuf格式文件中匹配与SQL语句对应的目标Protobuf文件模板。可以理解的是,在通常情况下上述SQL语句将用于对数据库数据的查询,而进行数据查询存在有输入参数以及与输入参数的对应输出参数,例如,在进行学生成绩查询时,需输入学生姓名或者学号,对应的输出该学生的语文、数学、英语、物理、历史等科目的成绩。而上述SQL语句的特征量则为SQL语句中输入参数/输出参数的数据类型,又或者各输入参数/输出参数的数量等。基于SQL语句的特征量进行匹配得到Protobuf文件。对应的,生成Protobuf文件所需要的通用模板代码包括:
[0087] protobufTemp:=`
[0088] syntax="proto3";//使用protobuf 3协议
[0089] package app.app;
[0090] option go_package="./buf";
[0091] service{{.ServiceName}}{//由于服务的名称是动态变化的,所以这里预留了{{.ServiceName}}占位符;
[0092] {{.FunList}}//由于服务包含的函数名称和个数是不确定的,所以这里预留了{{.FunList}}占位符;
[0093] {{.StructList}}//由于函数的输入参数和输出参数是不固定的,所以预留{{.StructList}}占位符。
[0094] 在将查询数据库函数和Protobuf文件加载到预设的通用代码模板,通用代码模板包括了web框架、数据库框架、main函数等,此外,技术人员也可根据自身需求对通用代码模板进行设置。查询数据库函数、Protobuf文件和通用代码模板即可组成实现SQL语句查询功能的程序软件。非技术人员通过上述生成的软件即可满足自身的查询需求。
[0095] 在本实施例中,经过修改的SQLC工具,将接收SQL语句文件;根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件。即在本发明中,将借助原生SQLC工具,并对SQLC工具源代码进行修改,在SQLC工具生成与SQL语句对应的查询数据库函数之后,再将生成的查询数据库函数与预设通用代码模板结合即可得到具有与SQL语句相同功能的程序软件,而生成的程序软件可满足非技术人员数据查询需求。可以理解的是,本发明通过对SQLC工具原始代码的进行修改,使得修改后的SQLC工具可直接生成与SQL语句对应的程序软件(具有相同查询功能),无需技术人员进行人员编写程序代码,仅编写SQL语句即可降低了工作量,使得sql语句的数据库查询功能可快速面向用户并被用户所使用,将技术人员从重复的工作中解放出来,增强了生产效率。
[0096] 进一步的,参照图3,基于本发明基于SQL语句的软件生成方法的第一实施例提出本发明基于SQL语句的软件生成方法的第二实施例。
[0097] 所述SQL语句文件对应有表约束文件,在所述通过所述SQLC工具生成与所述SQL语句对应的查询数据库函数的步骤之前,所述方法包括:
[0098] 步骤S210,基于所述表约束文件或/和所述SQLC工具的规范对所述SQL语句进行校验,以判断所述SQL语句是否存在语法错误;
[0099] 步骤S211,当判定所述SQL语句不存在语法错误时,执行所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤。
[0100] 步骤S212,当判定所述SQL语句存在语法错误时,输出所述SQL语句文件中的SQL语句存在语法错误无法正常生成程序软件的提示信息。
[0101] 具体的,接收到的SQL语句文件中除本身的SQL语句外,还包括了表约束文件,表约束文件为避免的编写SQL语句时编写得到的SQL语句存在数据问题的约束条件,通常上述表约束的文件中所包含的约束条件可以包括:PRIMARY KEY(主键约束,主键字段不能为空,必须唯一)、FOREIGN KEY(外键约束,确定表与表之间的联系方式,一般情况下通过主表的标识列进行确定)、UNIQUE(唯一约束,确定这个字段中的数据必须是唯一存在的)、NOT NULL(非空约束,确定这个字段中的数据必须不能为空)、CHECK(检查约束,设置这个字段中的数据特性)等,此处将不再赘述。通过表约束文件可以对SQL语句进行校验或/和原生SQLC工具的规范对SQL语句校验,以保证进行的编译(生成数据库查询函数)的SQL语句本身不存在有语法错误。对于不存在语法错误的SQL语句可直接执行根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤。而存在语法错误的SQL语句则输出SQL语句文件中的SQL语句存在语法错误无法正常生成程序软件的提示信息,以便于技术人员在接收到提示信息后对进行SQL语句进行更正。例如,存在一cluster表,该表的约束文件如下:
[0102] CREATE TABLE`cluster`(
[0103] `id`char(36)CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT”COMMENT'集群ID';
[0104] `name`varchar(100)CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT”COMMENT'集群名称';
[0105] `desc`varchar(100)NOT NULL DEFAULT”COMMENT'描述信息';
[0106] `create_time`int NOT NULL DEFAULT'0'COMMENT'创建时间';
[0107] )
[0108] ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='集群表'。
[0109] 如有一个SQL语句为:‑name:GetClusterByUser:one select*from cluster where user='张三'。由于表约束文件中没有user字段,则这个sql是错的。首先对表约束文件进行字段解析,得到表约束文件中可用字段为:id、name、desc、create_time四个字段。对sql语句进行字段解析,得到非可用字段,如user字段,则进行报错。
[0110] 可以理解的是,在本实施例中,将对用于生成软件程序的SQL语句进行校验,对于存在语法错误的SQL语句将输出错误提示,避免存在语法错误的SQL语句导致生成对应程序软件的过程出现错误。
[0111] 进一步的,参照图4,基于本发明基于SQL语句的软件生成方法的第一实施例提出本发明基于SQL语句的软件生成方法的第三实施例。
[0112] 所述将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件的步骤包括:
[0113] 步骤S310,将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板得到与所述程序软件对应的程序代码;
[0114] 步骤S320,对所述程序代码进行编译生成所述程序软件,并通过所述Protobuf文件和所述SQL语句生成与所述程序软件对应的地址接口,以使所述程序软件可被获取使用。
[0115] 具体的,将查询数据库函数和Protobuf文件加载至用代码模板后即可得到一个程序软件的完整的程序代码,将完整的程序代码进行编译之后,即可到程序软件。其中,程序软件中的Protobuf文件将结合SQL语句生成该程序软件的地址接口。具体为Protobuf文件依据SQL语句中的输入参数和输出参数生成该程序软件唯一地址接口,非技术人员即可通过该地址接口打开上述生成的程序软件并进行数据查询。例如,SQLC工具将一SQL语句:name:GetClusterById:one SELECT*FROM cluster WHERE id=问号,翻译为查询数据库函数:GetClusterById(ctx context.Context,id string)(Cluster,error)。通过该查询函数生成一个cluster_service.protobuf文件:
[0116]
[0117]
[0118] 基于cluster_service.protobuf文件,可使用protoc工具生成接口地址。如用protoc工具生成接口地址文件包括:protoc‑I./cluster_service.proto‑‑go_out=./‑‑twirp_out=./‑‑openapiv2_out=./。对应的接口地址为:Type ClusterService interface{GetClusterById(context.Context,*Request)(*Response,error)}。可以理解的是,在本实施中,对于生成的程序软件还将生成对应的地址接口,非技术人员打开地址接口即可进行查询,方便了程序软件的使用。
[0119] 此外,参照图5,本发明实施例还提出一种基于SQL语句的软件生成装1000,所述基于SQL语句的软件生成装置1000包括:
[0120] 接收模块100,用于接收SQL语句文件;
[0121] 第一生成模块200,用于根据所述SQL语句文件中的SQL语句生成查询数据库函数,其中,所述查询数据库函数与所述SQL语句具有相同的服务功能;
[0122] 第二生成模块300,用于基于所述查询数据库函数以及预设的通用代码模板生成与所述SQL语句对应的程序软件。
[0123] 可选地,所述第一生成模块200还用于:
[0124] 将所述SQL语句加载至预设的SQLC工具;
[0125] 通过所述SQLC工具生成与所述SQL语句对应的所述查询数据库函数。
[0126] 可选地,所述SQL语句文件对应有表约束文件,所述第一生成模块还用于:
[0127] 基于所述表约束文件或/和所述SQLC工具的规范对所述SQL语句进行校验,以判断所述SQL语句是否存在语法错误;
[0128] 当判定所述SQL语句不存在语法错误时,执行所述根据所述SQL语句文件中的SQL语句生成查询数据库函数的步骤。
[0129] 可选地,所述第二生成模块200还用于:
[0130] 根据预设Protobuf格式文件和所述SQL语句生成Protobuf文件;
[0131] 将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板生成所述程序软件。
[0132] 可选地,所述预设Protobuf格式文件包括多个Protobuf文件模板,所述第二生成模块200还用于:
[0133] 基于所述SQL语句的特征量从所述预设Protobuf格式文件中匹配与所述SQL语句对应的目标Protobuf文件模板;
[0134] 将所述目标Protobuf文件模板作为所述Protobuf文件。
[0135] 可选地,所述第二生成模块200还用于:
[0136] 将所述查询数据库函数以及所述Protobuf文件加载至所述通用代码模板得到与所述程序软件对应的程序代码;
[0137] 对所述程序代码进行编译生成所述程序软件,并通过所述Protobuf文件和所述SQL语句生成与所述程序软件对应的地址接口,以使所述程序软件可被获取使用。
[0138] 可选地,所述第一生成模块100还用于:
[0139] 当判定所述SQL语句存在语法错误时,输出所述SQL语句文件中的SQL语句存在语法错误无法正常生成程序软件的提示信息。
[0140] 本发明提供的基于SQL语句的软件生成装置,采用上述实施例中的基于SQL语句的软件生成方法,旨在解决如何快速实现sql语句的数据库查询功能面向用户并被用户所使用的技术问题。与现有技术相比,本发明实施例提供的基于SQL语句的软件生成装置的有益效果与上述实施例提供的基于SQL语句的软件生成方法的有益效果相同,且该基于SQL语句的软件生成装置中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。
[0141] 此外,本发明实施例还提出一种基于SQL语句的软件生成设备,所述基于SQL语句的软件生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于SQL语句的软件生成程序,所述基于SQL语句的软件生成程序被所述处理器执行时实现如上述的基于SQL语句的软件生成方法的步骤。
[0142] 本发明基于SQL语句的软件生成设备的具体实施方式与上述基于SQL语句的软件生成新方法各实施例基本相同,在此不再赘述。
[0143] 此外,本发明实施例还提出一种介质,所述介质上存储有基于SQL语句的软件生成程序,所述基于SQL语句的软件生成程序被处理器执行时实现如上述的基于SQL语句的软件生成方法的步骤。
[0144] 本发明介质具体实施方式与上述基于SQL语句的软件生成方法各实施例基本相同,在此不再赘述。
[0145] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0146] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0147] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0148] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。