使用Python更新SQLite数据库中的行

时间:2014-08-09 17:02:23

标签: python database sqlite

我有以下问题: 我想逐行更新现有的SQLite数据库。现在发生的是迭代器更新所有现有行,其最后一个值为dbdata

我不希望这样。 我希望更新row 1的第一个分配值为dbdata。然后取迭代器再次“向上”,得到下一个值,更新应该继续到下一行。 显然逻辑存在问题,但我无法理解它。

现在发生的事情是现在更新了行,这使得我为所有行分配了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 个答案:

答案 0 :(得分:1)

将所有数据设置为最后一个dbdata的原因是因为您的更新不限于单行,因此在每次迭代时,所有行都设置为您刚处理的任何dbdata。要限制更新,请使用where子句,以便唯一受影响的行是您想要的行。

答案 1 :(得分: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))

有效!它会在每次迭代时改变rowid的数量。