如何在遍历batch_values时每10次迭代执行一次run_query?
每10条执行一次查询的正确实现
你的尝试代码有几个明显问题:
- 每次循环都重置
part_to_append_1,根本攒不住10条数据 while (i<=10)完全逻辑错误——i是列表里的字符串元素,和数字10比大小毫无意义- 没处理最后剩下的不足10条的数据
下面给两种靠谱的实现方式:
方式1:遍历同时计数触发执行
part_to_append_1 = '' # 用enumerate带索引遍历,从1开始计数 for idx, item in enumerate(batch_values, start=1): part_name = item.split("x")[0] part_value = item.split("y")[1] part_to_append = f"({part_name} = '{part_value}')," part_to_append_1 += part_to_append # 每满10条,或者到最后一条时执行查询 if idx % 10 == 0 or idx == len(batch_values): # 去掉末尾多余的逗号,避免SQL语法错误 query = f'''EXECUTE {part_to_append_1.rstrip(',')};''' run_query(query) # 重置拼接字符串,准备下一组 part_to_append_1 = ''
方式2:先分组再批量处理
先把原列表拆成每10个一组的子列表,再逐个组拼接执行,逻辑更清晰:
# 按每10个元素拆分原列表 batches = [batch_values[i:i+10] for i in range(0, len(batch_values), 10)] for batch in batches: part_to_append_1 = '' for item in batch: part_name = item.split("x")[0] part_value = item.split("y")[1] part_to_append = f"({part_name} = '{part_value}')," part_to_append_1 += part_to_append # 移除末尾逗号后执行查询 query = f'''EXECUTE {part_to_append_1.rstrip(',')};''' run_query(query)
注意事项
- 两种方式都处理了最后一组不足10条的情况
- 必须去掉拼接后末尾的逗号,不然会导致SQL语法错误
- 方式2的分组逻辑更直观,代码可读性更高,推荐使用
内容的提问来源于stack exchange,提问作者ire
相关产品推荐
相关产品推荐

