使用Python更新SQLite数据库中的行
我遇到了一个问题:
我想要逐行更新一个已经存在的SQLite数据库。但是现在的情况是,迭代器把所有的行都更新成了dbdata
的最后一个值。
我不想这样。我希望先用dbdata
的第一个值更新row 1
,然后迭代器再“向上”走,获取下一个值,然后继续更新下一行。
显然,这里有逻辑上的问题,但我就是想不明白。
现在的情况是,所有的行都被更新了,结果是所有行都变成了dbdata
的最后一个值。我只想每次迭代更新一行。
我该怎么告诉Python每次“向下一行走一步”?有人能给我一点提示吗?我并不想要完整的解决方案。我的当前代码如下:
for row in dbconnector:
print (row)
dbdata = langid.classify("{}".format(row))
print (dbdata)
connector.execute('''update SOMEDB set test1=? , test2=?''',(dbdata[-2], dbdata[-1]))
我正在使用SQLite数据库和Python 3.3。
2 个回答
1
你所有的数据都被设置成了最后一个dbdata的原因是,因为你的更新没有限制在某一行上,所以在每次循环时,所有的行都被设置成你刚处理的那个dbdata。为了限制你的更新,只影响你想要的那一行,你需要使用一个where条件。
1
解决了!谢谢大家的帮助!
n = 0
for row in dbconnector:
print (row)
dbdata = langid.classify("{}".format(row))
print (dbdata)
for amount in row:
n += 1
print (n)
connector.execute('''update SOMEDB set test1=? , test2=? where rowid == ?''',(dbdata[-2], dbdata[-1], n))
这个方法有效!它在每次循环时都会改变行号。