【SQL】解决ValueError:unsupported format character ‘?‘的错误

当我们使用sql查询,或者修改sql 语句中,使用近似模糊查询,且带有 %s 用来连接字符串时,遇到ValueError:unsupported format character '?' 的错误,以下是原因和解决的方法:

1. 原因:

我们在执行cursor.execute(query)时,语句和参数之间,我们用 % 连接,但在python 中,%是连接字符串的,那就跟模糊查询中的 % 起冲突了 , 所以会出现 ‘%标’ 会出现不识别的情况,即unsupported format character。

如果只是select 查询,会遇到这种:
在这里插入图片描述如果是执行修改UPDATE语句,可能会遇到这种:

在这里插入图片描述这是因为我们修改的语句的,传入参数的内容里含有%,也会让sql的读取出现问题。

2.解决方法:

使用.replace('%', '%%%%'),将查询语句中的“%”,替换成“%%%%”,让这个通配符成为字符串,sql就无法识别为模糊查询了。

result_json='{"title":"json在线解析%(简版) -%JSON在线解析"}'
UPDATE_SQL = f"UPDATE table_ SET status=1, data_='{json.dumps(result_json, ensure_ascii=False)}'".replace('%', '%%%%')
print('sql语句是:',UPDATE_SQL)#查看查询语句
engine.execute(UPDATE_SQL) #执行语句

关于sql查询中%的用法补充:
1、在SQL语句中一个% ,代表任意个字符
如 select * from emp where name like ‘K%’;
即表示查询 emp表中 以K开头姓名的数据;

2、两个% 代表两段内容是任意的,
如 select * from emp where name like ‘%OK%’;
即表示查询emp 表中 姓名包含OK的数据

参考:https://zhidao.baidu.com/question/456476941.html

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值