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

Python循环迭代ID更新SQL时报'int不可迭代'错误求助

问题解决

错误原因

你把逗号分隔的ID字符串(比如"18,17,83,14")直接转成了整数int,而整数是不可迭代的,所以for item in items会抛出TypeError。而且实际上int("18,17,83,14")本身就会报错,因为字符串里包含逗号,无法直接转成整数。

修正步骤

  1. 对逗号分隔的ID字符串进行分割,得到单个ID的字符串列表
  2. 遍历列表,将每个ID字符串转成整数
  3. 把数据库提交操作con.commit()移到循环外,减少数据库交互次数,提升效率

修正后的代码

for row in range(self.tableLinhaNova.rowCount()): 
    _item = self.tableLinhaNova.item(row, column) 
    if _item:            
        items1 = self.tableLinhaNova.item(row, column).text()
        # 按逗号分割字符串,得到每个ID的字符串列表
        id_str_list = items1.split(',')
        # 遍历每个ID字符串,转成整数后执行更新
        for id_str in id_str_list:
            # 去除可能的空格(比如ID之间有空格的情况)
            id_str = id_str.strip()
            if id_str:  # 避免空字符串转int报错
                item = int(id_str)
                cursor.execute('''UPDATE "Teste" SET "Estado"= 2 WHERE "IdTeste" = %s''', [item])
    # 所有更新执行完后再提交
    con.commit()

额外说明

  • split(',')会把"18,17,83,14"拆成["18", "17", "83", "14"]
  • strip()用来处理ID之间可能存在的空格(比如"18, 17, 83"这种情况)
  • 增加if id_str:判断是为了防止分割后出现空字符串(比如字符串首尾有逗号的情况,比如",18,17,")导致转int报错

内容的提问来源于stack exchange,提问作者ANDRE SA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:05:05