0

我有一个 sqlite3 表,如下所示

记录(WordID INTEGER PRIMARY KEY,Word TEXT,Wordcount INTEGER,Docfrequency REAL)。如果表不存在,我想创建并将数据插入到该表中,否则我想以这样的方式更新表,即只有“Wordcount”列会根据“Word”列中的数据的基础(参考)进行更新。我正在尝试从一个 python 程序中执行这个,比如

import sqlite3
conn = sqlite3.connect("mydatabase")

c = conn.cursor()
#Create table
c.execute("CREATE TABLE IF NOT EXISTS  Record(WordID INTEGER PRIMARY KEY, Words TEXT, Wordcount INTEGER, Docfrequency REAL)")

#Update table
c.execute("UPDATE TABLE IF EXISTS Record")

#Insert a row of data
c.execute("INSERT INTO Record values (1,'wait', 9, 10.0)")
c.execute("INSERT INTO Record values (2,'Hai', 5, 6.0)")

#Updating data
c.execute("UPDATE Record SET Wordcount='%d' WHERE Words='%s'" %(11,'wait') )

但我无法更新表格。在运行程序时,我收到错误消息

c.execute("UPDATE TABLE IF EXISTS Record") sqlite3.OperationalError: near "TABLE": 语法错误

我应该如何编写代码来更新表格?

4

1 回答 1

0

您的 SQL 查询UPDATE无效 - 请参阅文档

另外,我不明白为什么您要在更新时检查表的存在,因为在此之前您正在创建它,如果它不存在。

如果您的目标是更新条目(如果存在)或插入它(如果不存在),您可以通过以下方式执行此操作:

  • 首先做一个UPDATE并检查更新的行数。如果为 0,则您知道该记录不存在,您应该INSERT改为。
  • 首先执行一个INSERT- 如果存在与违反约束有关的错误,您知道该条目已经存在,您应该执行一个UPDATE
于 2011-08-12T02:37:52.013 回答