#!/usr/bin/python# filename : hello.pyfrom sqlite3 import *conn = connect('database')c = conn.cursor()c.execute('select * from table limit 2')for row in c: newname = row[1] newname = newname[:-3]+"hello" newdata = "UPDATE table SET name = '" + newname + "',originalPath = '' WHERE ID = '" + str(row[0]) + "'" print row c.execute(newdata) conn.commit()c.close()
它就像第一行的魅力一样,但由于某种原因它只运行一次循环(只有表中的第一行被修改).当我删除“c.execute(newdata)”时,它会循环遍历表中的前两行,就像它应该的那样.我如何使其工作?
解决方法 这样做是因为只要你执行c.execute(newdata),光标就不再指向原始结果集了.我会这样做:#!/usr/bin/python# filename : hello.pyfrom sqlite3 import *conn = connect('database')c = conn.cursor()c.execute('select * from table limit 2')result = c.fetchall()for row in result: newname = row[1] newname = newname[:-3]+"hello" newdata = "UPDATE table SET name = '" + newname + "',originalPath = '' WHERE ID = '" + str(row[0]) + "'" print row c.execute(newdata)conn.commit() c.close()conn.close()总结
以上是内存溢出为你收集整理的python – 为什么“c.execute(…)”打破循环?全部内容,希望文章能够帮你解决python – 为什么“c.execute(…)”打破循环?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)