从python程序插入/更新sqlite表

时间:2011-08-12 02:26:40

标签: pysqlite

我有一个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:“TABLE”附近:语法错误

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

1 个答案:

答案 0 :(得分:0)

UPDATE的SQL查询无效 - 请参阅the documentation

另外,我不明白你为什么要在更新时检查表的存在,因为就在你创建它之前它是否存在。

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

  • 首先执行UPDATE并检查更新的行数。如果为0,则表示记录不存在,您应该INSERT代替。
  • 首先执行INSERT - 如果存在与违反约束相关的错误,您知道该条目已经存在,您应该改为UPDATE