使用Python cursor从SQL取数存入元组,无法统计行数求助
问题分析与解决
原代码的问题
- SQL语法错误:
execute中的SQL语句未闭合,末尾缺少单引号和右括号,会直接导致执行报错。 - 统计行数的逻辑错误:
row.count('FileName')是在查询结果的元组中查找等于'FileName'的元素数量,但row是多行数据的集合,每个元素是一行的字段值,'FileName'是字段名而非数据值,这个操作完全无法得到行数,只会返回0。 - 未使用目标方法:你原本打算用
fetchmany(),但代码里误用了fetchall()。
正确实现方式
方式1:用fetchmany()获取数据并统计行数
fetchmany(size=N)会返回包含N行数据的元组,直接用len()就能统计返回的行数:
# 修正SQL语法,执行查询 cursor.execute("select * from temp where File_name ='ABC'") # 使用fetchmany获取指定行数的数据,size参数指定每次获取的行数 rows = cursor.fetchmany(size=10) # 示例:每次取10行 # 统计返回的行数 row_count = len(rows) print(row_count)
方式2:直接用SQL统计总行数(更高效)
如果只是需要统计符合条件的总行数,没必要取出所有数据,直接用SQL的count(*)查询更高效:
cursor.execute("select count(*) from temp where File_name ='ABC'") total_count = cursor.fetchone()[0] print(total_count)
补充:如果用fetchall()统计行数
如果确实需要取出所有数据再统计,同样用len()即可:
cursor.execute("select * from temp where File_name ='ABC'") rows = cursor.fetchall() row_count = len(rows) print(row_count)
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

