解决 pymysql.err.OperationalError: (1054, “Unknown column ‘xxx‘ in ‘where clause‘“)

在Python使用pymysql操作MySQL时遇到OperationalError,原因是WHERE子句中的列名错误。问题出在尝试更新不存在的列'xxx'。解决方案是确保值被正确地用单引号包围,避免SQL将其解析为字段名。修正后的SQL语句成功执行并解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决 python 对mysql执行操作时报错: pymysql.err.OperationalError: (1054, “Unknown column ‘xxx’ in ‘where clause’”)

我发现我使用mysql往mysql数据库中插入数据的时候,少插入一个字段的数据,然后就想使用update语句把这一个字段的内容插进去:

sql = """UPDATE article set article_content = %s where id = %s""" %(content,article_id)

然后发现报错:

pymysql.err.OperationalError: (1054, "Unknown column '17020ffb957a3738d9faf6de06061354' in 'where clause'")

我就打印了一下我的sql语句,发现是这样的:

UPDATE article set article_content = test where id = 17020ffb957a3738d9faf6de06061354

原本我的想法是我根据函数传参,传过来的就是字符串,不用再加单引号了,但是这样想是错误的,值必须放在单引号里,否则sql可能会把值当做字段
把sql这样写就可以了:

sql = """UPDATE article set article_content = '{}' where id = '{}'""".format(content, article_id)

打印一下发现是正确的sql语句:

UPDATE article set article_content = 'test' where id = '17020ffb957a3738d9faf6de06061354'

更新成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值