繁体   English   中英

Sqlite3 INSERT语句中的Python变量替换

[英]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与您指定值匹配的所有行,用新值更新f1f2列。

或者,使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM