python sqlite3 遍历删除记录

1,533 次浏览

在对sqlite 进行遍历删除时,
使用如下代码,但是结果是只能执行一次,就退出循环了。
原因是,在进行删除操作时,游标发生了变化,所以结果集无效了。
改正后,变为复制结果集,不使用游标。
错误代码❌:
        c.execute("SELECT * FROM table")
	for row in c:
                if(row[2]>100):
                    filename=pic_path+row[1]
		    c.execute("DELETE from table where id='%s' "%row[0])
	            conn.commit()
后来经过改正:可以顺利运行
正确代码✅:
	c.execute("SELECT * FROM table")
        r=c.fetchall()
	for row in r:
                if(row[2]>100):
                    filename=pic_path+row[1]
		    c.execute("DELETE from table where id='%s' "%row[0])
	            conn.commit()