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

Python:移除循环生成的嵌套列表括号以适配谷歌表格插入

解决嵌套列表多余括号的问题

首先,咱们来定位问题:你当前代码里,cursor.fetchmany(each)返回的是包含单条记录的列表(比如[(105, 'David', ...)]),然后你把这个列表直接append到values_list中,就导致最终的列表多了一层嵌套结构,不符合Google Sheets insert_rows的参数要求。

接下来给你两种简单的修改方案:

方案1:直接提取fetchmany返回的单条记录

既然你的循环逻辑里每次应该只获取一条记录,那可以直接取fetchmany结果的第一个元素,再添加到列表中:

修改后的核心代码片段:

values_list = [] 
x = 0
# 提前定义index变量,避免运行报错
index = 0
for n in different_values: 
    for each in different_values: 
        different_id = list(different_values) 
        arg_1 = different_id[x] 
        cursor.execute(sqlstmt2, arg_1=arg_1) 
        # 提取fetchmany结果的第一个元素,去掉外层列表
        rows = cursor.fetchmany(each)[0] 
        index += 1 
        x += 1 
        print(rows) 
        values_list.append(rows) 
        break 
print(values_list)

这样最终的values_list会变成:

[(105, 'David', '05.11.88', 'M', 'xxx', 'United States of America', 'republican', 'k'), (106, 'Valli', '16.06.89', 'M', 'xxx', 'United States of America', 'republican', 'k')]

完全符合insert_rows的参数要求,直接传入即可:

wks.insert_rows(row=1, number=1, values=values_list)

方案2:用extend替代append

如果你不想修改fetchmany的结果,也可以用extend代替append,因为extend会把rows里的每个元素(也就是单条记录)逐个添加到values_list中,而不是把整个rows列表作为一个元素添加:

修改核心部分:

rows = cursor.fetchmany(each)
# 替换append为extend,自动平铺嵌套的列表
values_list.extend(rows)

这个方案更灵活,如果后续fetchmany返回多条记录,也能自动把所有记录平铺到values_list里,不需要额外调整。

另外提个小细节:你的代码里index变量没有提前定义,运行时会触发NameError,记得在循环前加上index = 0哦。

内容的提问来源于stack exchange,提问作者Jarda Jaromír

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:15:27