MySQL在进行数据增删改查时候出现:not enough arguments for format string

一、版本说明

MySQL 8版本
Windows 系统

二、问题解读

这个错误通常是由于在使用Python中的字符串格式化时,需要传递更多的参数。具体来说,您可能需要检查您的SQL语句中占位符的数量与您提供的参数数量是否匹配。 如果您可以提供更多的上下文和代码细节,我可以为您提供更准确的帮助。

三,我的sql语句

sql_ = f"UPDATE product_material SET `ocr_text` = {result} WHERE id = {id}"

四、为啥会出现这个情况

这种情况可能会出现在两种情况下:

  1. 当你使用f-string时,格式字符串中的占位符不匹配传入的参数。例如,如果你在格式字符串中有两个占位符{result}和{id},但是你只提供了一个值,则会出现该错误。

  2. 当你使用.format()方法时,也会出现类似的错误。例如,如果你在使用.format()方法时忘记提供足够的参数,或者位置不正确,则会出现类似的错误。

在这两种情况下,Python都会尝试将格式字符串中的大括号解析为占位符,但是由于缺少必要的参数而失败,并抛出“not enough arguments for format string”错误。

五、解决方法

这样去修改代码:

 sql = f'UPDATE product_material SET `ocr_text` = %s WHERE id = %s'
      self.mc.update(sql, (result, id))

在 Python 中,使用花括号 {} 进行字符串格式化时不会有长度限制。但是,在 SQL 查询中,你需要确保传递的参数值与列的数据类型匹配,并且使用适当的转义字符以避免 SQL 注入攻击。如果你使用的是 MySQL 数据库,可以尝试使用参数绑定来执行查询,这样可以更加安全和高效。

%s 是占位符,表示要插入的值,(result, id) 是一个元组,包含要插入的两个值。这种方式可以自动处理参数类型和转义字符,从而避免了一些安全问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QuietNightThought

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值