python正则替换查询_用于提取和替换查询参数的python正则表达式

给你:import re

sql = """select name, count(1) from employees where status = 'Active' and role= 'Manager' group by name order by 1;"""

rx = re.compile(r"""\w+\s*=\s*'([^']+)'""")

params = rx.findall(sql)

print(params)

# ['Active', 'Manager']

主要部分是

^{pr2}$

分解后,这里说:\w+\s* # 1+ word characters, 0+ whitespace characters

=\s* # =, 0+ whitespace characters

'([^']+)' # '(...)' -> group 1

要同时拥有查询和参数,可以编写一个小函数:

import re

sql = """select name, count(1) from employees where status = 'Active' and role= 'Manager' group by name order by 1;"""

rx = re.compile(r"""(\w+\s*=\s*)'([^']+)'""")

def replacer(match):

replacer.params.append(match.group(2))

return '{}:{}'.format(match.group(1), len(replacer.params))

replacer.params = list()

query = rx.sub(replacer, sql)

params = replacer.params

print(query)

print(params)

# select name, count(1) from employees where status = :1 and role= :2 group by name order by 1;

# ['Active', 'Manager']

如注释中所述,您需要为要分析的每个查询重置params列表。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值