0

在更新针对已知 rowid 的 Sqlite 数据时,有没有办法使用 Python 的变量替换?我想说的是:

cursor.execute('INSERT INTO Words(rowid,f1,f2) VALUES(?,?,?)', [rowid,2,3])

问题是这失败并出现错误:

sqlite3.IntegrityError: PRIMARY KEY must be unique

我想在不更改 rowid 编号的情况下将值列表写入表的现有记录。从值列表更新所有字段的公认方法是什么?

4

1 回答 1

3

您使用UPDATE而不是INSERT

cursor.execute('UPDATE Words SET f1=?, f2=? WHERE rowid=?', [2, 3, rowid])

这告诉数据库使用新值更新f1和列,用于与您的指定值匹配的f2所有行。rowid

或者,使用INSERT OR REPLACE语法; 如果违反了唯一性约束(例如主键不是唯一的),UPDATE则会发出 an ,但如果rowid尚未出现,则将插入新行:

cursor.execute('INSERT OR REPLACE INTO Words(rowid,f1,f2) VALUES(?,?,?)', [rowid,2,3])
于 2013-05-01T16:23:29.250 回答