利用正则进行sql解析
来源:互联网 发布:程序源码网 编辑:程序博客网 时间:2024/06/06 08:35
import reclass SQLParser: def __init__(self, sql): self.sql = sql self.paras = None self.num_para = sql.count('@') # @ only be used as the parameter identify self.rawstr = '' s = '.*?@(\w+)' self.d = {} for i in range(0,self.num_para): self.rawstr = "%s%s" %(self.rawstr , s) compile_obj = re.compile(self.rawstr,re.DOTALL) match_obj = compile_obj.search(self.sql) self.all_groups = None if match_obj != None: self.all_groups = match_obj.groups() def getArgs(self): args = set() for item in self.all_groups: args.add(item) return args def getSQL(self): for item in self.all_groups: ori = '@%s' %(item) val = "%%(%s)s"%(item) self.sql = self.sql.replace(ori,val) return self.sql def setParas(self,paras): self.paras = paras def apply(self): for g in self.all_groups: #print g if self.d.has_key(g): pass else: if self.paras.has_key(g): self.d[g] = self.paras[g] else: raise Exception('no value assigned') def test(self,dd): self.setParas(dd) self.apply() sql = self.sql %self.paras return {'sql':sql, 'parameters':self.d}if __name__ == "__main__": sql = """select sysdate from dual where user = '@username1' and password='@password' or username='@username' """ sp = SQLParser(sql) print sp.getArgs() print sp.getSQL() dd = {'username1':'abc', 'username':'aidear', 'password':'idea'} print sp.test(dd)
0 0
- 利用正则进行sql解析
- 一个利用正则表达式解析单句SQL的类SqlParser
- 利用正则表达式进行校验
- 利用javacc解析SQL
- 利用正则表达式类解析SQL语句,达到Worklist兼容各个RIS数据库的目的
- 利用正则表达式 进行字符的判断
- MFC利用正则表达式进行密码匹配
- 利用正则表达对IP进行排序
- 利用jsqlparser解析SQL语句
- VC利用boost库解析正则表达式
- VC利用boost库解析正则表达式
- VC利用boost库解析正则表达式
- VC利用boost库解析正则表达式
- VC利用boost库解析正则表达式
- 利用正则表达式实现密码解析
- 利用正则表达式解析简单XML
- 使用正则表达式对URL进行解析
- 利用HTMLDocument2对HTML文本进行解析
- IOS简单的实现手机震动的提示
- php读取和创建word文档
- SD卡驱动分析--基于高通平台
- Android UI优化
- PHP对多维数组按照某个键值大小进行排序
- 利用正则进行sql解析
- CSS-伪类选择器
- 2013-12-27 17:26:09
- 内核编程理解
- C#综合揭秘——细说多线程(上)
- Win7旗舰版中的IIS配置asp.net的运行环境
- 位图标记 二分查找 位二分
- win7中使用Vmware虚拟机安装苹果Mac OSX雪豹系统
- Intent()用法简介