You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python构建SQL UPDATE语句时遇‘Bad operand type for unary +: str’错误求助

解决Python中"Bad operand type for unary +: str"错误的SQL拼接问题

咱们一步步拆解你的问题,先把报错的根源理清楚:

错误原因分析

  1. 整数与字符串直接拼接(第二个代码示例)
    Python不允许直接把整数(比如21)和字符串(比如"integration =")用+拼接——两种类型不兼容,必须把整数转换成字符串才能和其他字符串拼接。这也是第一个示例用str(21)的原因,但第一个示例还有其他语法问题(后面细说)。

  2. 错误的续行写法(第四个代码示例)
    你在第四个代码里写了'14' \+ ", quality =",这里的\+是完全错误的:

    • 反斜杠\在Python里是用来续行的,正确的续行应该把\放在行尾,而不是加号前面。
    • 写成\+后,Python会把这个加号当成一元加号运算符(就是用来表示正数的+,比如+5),但一元加号不能作用在字符串上,所以直接触发了Bad operand type for unary +: str错误。
  3. SQL语句的语法问题(所有示例都存在)
    你的SQL字符串里缺少必要的空格:

    • SET后面没有空格,会变成SETintegration,SQL引擎根本无法识别。
    • communication =17后面直接接WHERE,会变成communication =17WHERE,同样是无效语法。

正确的写法推荐

最简洁且不容易出错的方式是使用Python的f-string(Python 3.6及以上版本支持),它能自动处理类型转换和字符串拼接,还能让代码可读性大幅提升:

update1 = f'''UPDATE User_Answer_Knowledge SET 
    integration = {21}, 
    scope = {12}, 
    schedule = {13}, 
    cost = {14}, 
    quality = {15}, 
    resource = {16}, 
    communication = {17} 
WHERE User_Key = 1'''

如果你的Python版本较低,也可以用str()转换整数后拼接,但一定要注意空格和正确的续行方式:

update1 = '''UPDATE User_Answer_Knowledge SET ''' + \
          "integration =" + str(21) + ", " + \
          "scope =" + str(12) + ", " + \
          "schedule =" + str(13) + ", " + \
          "cost =" + str(14) + ", " + \
          "quality =" + str(15) + ", " + \
          "resource =" + str(16) + ", " + \
          "communication =" + str(17) + \
          " WHERE User_Key = 1"

注意这里的续行是把\放在每一行的末尾,同时在WHERE前面加了空格,避免SQL语法错误。

额外提醒:SQL注入风险

虽然你的示例里用的是固定值,但如果以后要动态传入用户输入的内容,绝对不要用字符串拼接的方式生成SQL语句,会有严重的SQL注入风险。应该用数据库驱动提供的参数化查询,比如:

# 以MySQL为例(使用pymysql)
cursor.execute(
    '''UPDATE User_Answer_Knowledge SET 
        integration = %s, 
        scope = %s, 
        schedule = %s, 
        cost = %s, 
        quality = %s, 
        resource = %s, 
        communication = %s 
    WHERE User_Key = %s''',
    (21, 12, 13, 14, 15, 16, 17, 1)
)

这样既安全又能避免类型转换的麻烦。

内容的提问来源于stack exchange,提问作者Feng Xiong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:42:51