用python去除SQL中的注释

在处理SQL脚本时,由于注释中可能包含特殊字符导致执行问题,特别是对于不完全支持特殊字符的数据库。本文介绍了如何使用Python编写脚本来去除SQL中的行注释和段落注释,确保SQL语句的正常执行。
摘要由CSDN通过智能技术生成

在看到这个标题时候肯定有人会想,我写SQL直接在数据库工具上执行就行了啊,工具会自动识别注释的,就是不用工具,把SQL写到存储过程里,数据库也会识别注释不执行的,干嘛非要去掉,费力不讨好。


其实是最近在做一个项目,需要在行云库里执行SQL,并且SQL是写在脚本上的,通过JDBC调用,众所周知,SQL的注释很随意,甚至有什么保佑不出bug这种,那么执行的时候就很有可能因为注释里的特殊字符导致一堆莫名其妙的bug出现,并且行云数据库是一个国产的不太完善的数据库,所以本身对特殊字符的支持也不是很好,所以去除注释势在必行。

好了,废话说的够多了,现在上代码,因为行注释和段落注释使用的注释方法不同,所以这里分成两个功能来写

# 去除行注释
# 说明:因为行注释是从--开始一直到结尾都算行注释,所以一个正则就可以搞定了
def rehint_line(sql_values):
  rev = re.compile('--.*\\n?')
  sql_values = re.sub(rev,'\n',sql_values)
  return sql_values

 行注释看起来还是比较简单的,其实我也没想到会这么简单,哈哈哈哈哈

# 去除段注释
'''
说明:
  1、在读取SQL的时候需要一次全部读出来,然后赋值给变量
  2、迭代读取SQL中的每一个字符,并且把字符写到新的变量里
  3、如果遇到/或*就记录下,例如给变量v
  4、当遇到/之后࿰
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值