注册 登录
  • 欢迎访问"运维那点事",推荐使用Google浏览器访问,可以扫码关注本站的"微信公众号"。
  • 如果您觉得本站对你有帮助,那么可以扫码捐助以帮助本站更好地发展。

Python处理SQL语句(提供SQL查询平台使用)

Python闲聊 彭东稳 1561次浏览 已收录 0个评论

在搞公司的SQL查询(MySQL)平台时,需要对用户查询SQL进行条数限制,默认是在配置文件中配置一个“limit = 1000”这样的参数。最自然想到的就是对用户通过web传入的SQL做处理,默认加上limit参数。这样一来就有这么几个问题需要处理:

1. 如果用户自己传入了limit 10这样的条件怎么办?

2. 如果用户自己传入了limit 10,2这样的条件怎么办?

3. 如果用户的查询比较复杂,有多个子查询怎么办?

4. 如果用户查询字段有`limit`(不加“时的SQL会报语法错误)、limittest这样的关键字怎么办?

最终代码如下,提供一个处理函数:

这个函数接收两个参数,SQL语句和默认limit限制值,在平台中是SQL是从前端获取来的,limit值是从配置文件获取来的。

大概逻辑如下:

1. 如果字段中`limit`或limittest关键字就进行替换成我指定关键字。

2. 如果用户输入没有limit限制就加上默认limit限制。

3. 如果用户输入有limit限制就进行判断用户输入值是否大于默认值,如果大于就替换成默认值,否则不改动。

4. 最后把替换过的关键字再替换回来。

在这里测试,就可以直接调用函数即可,如下:

结果如下:

可以看到结果满足我们的需求,由于用户输入值大于默认值就替换成了默认limit值。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)or分享 (0)
关于作者:

您必须 登录 才能发表评论!