[英]Python variable replacement in Sqlite3 INSERT statement
在更新针对已知rowid的Sqlite数据时,是否可以使用Python的变量替换? 我想说些类似的话:
cursor.execute('INSERT INTO Words(rowid,f1,f2) VALUES(?,?,?)', [rowid,2,3])
问题是这失败并显示错误:
sqlite3.IntegrityError: PRIMARY KEY must be unique
我想在不更改行号的情况下将值列表写入表的现有记录中。 从值列表更新所有字段的公认方法是什么?
您使用UPDATE
而不是INSERT
:
cursor.execute('UPDATE Words SET f1=?, f2=? WHERE rowid=?', [2, 3, rowid])
这告诉数据库,对于rowid
与您指定值匹配的所有行,用新值更新f1
和f2
列。
或者,使用INSERT OR REPLACE
语法 ; 如果违反了唯一性约束(例如主键不是唯一的),则会发出UPDATE
rowid
,但是如果还没有rowid
则会插入新行:
cursor.execute('INSERT OR REPLACE INTO Words(rowid,f1,f2) VALUES(?,?,?)', [rowid,2,3])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.