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

数据库查询后修改数据报错:'tuple' object does not support item assignment

问题分析与解决

核心问题

数据库查询返回的fetchall()结果是元组的列表,其中每一行数据都是不可变的元组。你虽然把整个结果转成了列表,但列表里的每个元素依然是元组,而元组不支持元素赋值,所以执行my_list[y][0] = sip[0]时触发tuple object does not support item assignment错误。

额外问题

你的SQL语句末尾多了一个单引号:"select desc ,city,datetime,loc from mytable'",这会导致SQL执行失败,需要先去掉多余的单引号。

修正后的代码方案

方案1:将每行元组转为列表再修改

command = "select desc, city, datetime, loc from mytable"
cursor.execute(command)
result = cursor.fetchall()

# 把每行元组转为可变的列表
my_list = [list(row) for row in result]

for y in range(len(my_list)):
    sip = my_list[y][0].split("/")
    my_list[y][0] = sip[0]

# 如需转回元组,执行下面的语句
myary = tuple(my_list)

方案2:用生成器直接生成修改后的元组(更简洁)

command = "select desc, city, datetime, loc from mytable"
cursor.execute(command)
result = cursor.fetchall()

# 直接生成修改后的元组集合
myary = tuple(
    (row[0].split("/")[0],) + row[1:] 
    for row in result
)

原代码冗余点说明

你原来的循环for x in result: myary.append(result[i]); i+=1完全没必要,直接myary = result或者myary = list(result)就能拿到结果集合,不需要手动循环追加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:48:12