Python操作MySQL时如何跳过指定行并获取查询结果对应行号
实现方案
基础实现代码
# 注意:如果需要用字段名作为key取行数据,创建游标时要指定dictionary=True cursor = conn.cursor(dictionary=True) cursor.execute("SELECT * FROM given_table") result = cursor.fetchall() # 用enumerate遍历结果集,start参数可以自定义行号起始值,默认从0开始,这里设为1表示行号从1计数 for line_num, row in enumerate(result, start=1): whatto = row['Action'] if whatto == "Skip": # 打印当前结果集内的行号 print(f"跳过第 {line_num} 行") # 跳过当前循环剩余逻辑,直接进入下一行遍历 continue # 其他需要执行的编辑逻辑写在下方 # ...
核心说明
- 行号适配偏移量查询:
enumerate返回的line_num是基于本次查询拿到的结果集的顺序生成的,不管你SQL里加了OFFSET偏移、分页条件,都是本次查询结果内的对应行号。如果你需要行号和数据库的偏移量对齐,直接把start参数设为OFFSET的数值+1即可,比如你的查询是OFFSET 200,就写enumerate(result, start=201),输出的行号就和全局数据的行号对应。 - 如果你没有开启游标的dictionary模式,row会返回元组格式,需要用索引取对应列的值,比如Action列是查询结果的第3列,就写
whatto = row[2]。 continue语句会直接终止当前轮次循环的后续代码执行,直接进入下一行的遍历,完全满足跳过指定行其余处理逻辑的需求。
内容的提问来源于stack exchange,提问作者Zoltan Torok
相关产品推荐
相关产品推荐

