我有以下数据库(测试数据库): Test Database
如图所示,我创建并填充了一个表(“stufptoplot”)。在
我想编辑一个特定的行(例如第五行),并更改其中的所有值。 我尝试了以下代码来实现这一点:
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
tableToEdit = 'stuffToPlot'
rowToEdit = '5'
unixVar = 5.5
dateStampVar ='feb-2018'
keywordVar = 'Hello World'
valueVar = 25
c.execute("""INSERT INTO """+tableToEdit+""" (unix, datestamp, keyword, value)
VALUES (?,?,?,?) WHERE ROWID =""" +rowToEdit),(unixVar, dateStampVar, keywordVar, valueVar)
conn.commit()
c.close()
conn.close()
尝试运行代码时出现以下错误:
Traceback (most recent call last): File "C:\Users\Bob\Documents\Eclipse Workspace\Python Test\SQLite3\SQLite3-3.py", line 19, in VALUES (?,?,?,?) WHERE ROWID =""" +rowToEdit),(unixVar, dateStampVar, keywordVar, valueVar) sqlite3.OperationalError: near "WHERE": syntax error
我也尝试过使用UPDATE/SET方法,但是得到了一个不同的错误:
^{pr2}$File "C:\Users\Shaun\Documents\Eclipse Workspace\Python Test\SQLite3\SQLite3-3.py", line 24, in SET (?,?,?,?) WHERE ROWID =""" +rowToEdit),(unixVar, dateStampVar, keywordVar, valueVar) sqlite3.OperationalError: near "(": syntax error
我只想编辑一个特定的行(使用ROWID),任何帮助将不胜感激。在
INSERT
总是添加一个新的行,使用INSERT
时不能使用WHERE
子句。所以是的,你必须在这里使用UPDATE
。但是您的UPDATE
语法是错误的。在UPDATE
使用columname=value
对,请参见official documentation for ^{我从使用连接切换到
str.format()
,但只将表名放入。ROWID
值可以作为查询参数传入,因此请这样做。在演示:
^{pr2}$相关问题 更多 >
编程相关推荐