想要达成的效果是:
从前端得到一句特定格式sql -->
取出sql中的占位字段,再给到前端用户填写 -->
把用户填写的数据格式化sql中,执行sql -->
实现步聚如下:
例如下面一句sql:
UPDATE loan_order SET STATUS='{STATUS}' WHERE order_num='{order_num}';
用正则提取STATUES、order_num
def select_sql(sql):
# re.I 使匹配对大小写不敏感
pattern = re.compile('{([a-z\w]+)}', re.I)
result = pattern.findall(sql)
return result
# ['STATUS', 'order_num']
把result给到前端,生成input,让用户填写值,后台得到值后,处理生dict格式,把dict格式传给如下方法,并格式化sql
input = {'STATUS': 159, 'order_num': 123456789}
run_sql(sql, **input)
def run_sql(sql, **kwargs):
if isinstance(sql, str):
sql = sql.format(**kwargs)
print(sql)
else:
print('error')
# UPDATE loan_order SET STATUS='159' WHERE order_num='123456789';
最后一步,连接数据库,执行sql
大功告成!