用于循环更新的python sqlite3
我试图在多次迭代中更新。但是,一旦数据库进行第一次更新,脚本就会中断循环。如何解决这个问题?谢谢 在循环之前使用用于循环更新的python sqlite3,python,Python,我试图在多次迭代中更新。但是,一旦数据库进行第一次更新,脚本就会中断循环。如何解决这个问题?谢谢 在循环之前使用data=data.fetchall()。否则,当您尝试在结果集上循环时,您会在循环内部循环光标(重置其结果集) 使用.fetchall()返回结果列表,以便在重新使用光标之前将结果存储在本地 或者,如果您不想在本地缓存第一个查询的结果,请创建一个单独的游标用于update语句。“但是,一旦数据库进行第一次更新,脚本就会中断循环。”您确定您的代码甚至进行了一次更新吗?语法错误。这种操作
data=data.fetchall()
。否则,当您尝试在结果集上循环时,您会在循环内部循环光标(重置其结果集)
使用.fetchall()
返回结果列表,以便在重新使用光标之前将结果存储在本地
或者,如果您不想在本地缓存第一个查询的结果,请创建一个单独的游标用于update语句。“但是,一旦数据库进行第一次更新,脚本就会中断循环。”您确定您的代码甚至进行了一次更新吗?语法错误。这种操作不是惯用的sql。很可能您可以将其重写为一条语句,无for循环,以获得更好的性能。你能告诉我们更多关于你正在做的查询,我们可以给你一个更好的答案。
import sqlite3
conn = sqlite3.connect('sample.db')
cursor = conn.cursor()
data = cursor.execute('''SELECT * From Table''')
for i in data:
title = i[0]
status = i[1]
cursor.execute('''UPDATED Table SET status=? WHERE title=?''', (status, title))
cursor.close()
conn.commit()