如何使用ROWID编辑pythonsqlite3中特定行的内容

2024-10-02 16:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据库(测试数据库): 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),任何帮助将不胜感激。在


Tags: 代码test数据库编辑connwheresqlite3rowid
1条回答
网友
1楼 · 发布于 2024-10-02 16:27:47

INSERT总是添加一个新的行,使用INSERT时不能使用WHERE子句。所以是的,你必须在这里使用UPDATE。但是您的UPDATE语法是错误的。在

UPDATE使用columname=value对,请参见official documentation for ^{}

c.execute(
    """UPDATE {} SET unix=?, datestamp=?, keyword=?, value=?
       WHERE ROWID = ?""".format(tableToEdit),
    (unixVar, dateStampVar, keywordVar, valueVar, int(rowToEdit)))

我从使用连接切换到str.format(),但只将表名放入。ROWID值可以作为查询参数传入,因此请这样做。在

演示:

^{pr2}$

相关问题 更多 >