
在对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()