gpt4 book ai didi

python - 为什么 "c.execute(...)"会中断循环?

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:22 24 4
gpt4 key购买 nike

我正在尝试更改 sqlite3 文件中的一些数据,但我对 python 和 google-fu 的不了解让我得到了这段代码:

#!/usr/bin/python
# Filename : hello.py

from 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.py

from 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(...)"会中断循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4467230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com