【问题标题】:Inserting/Updating sqlite table from python program从python程序插入/更新sqlite表
【发布时间】:2011-08-12 02:26:39
【问题描述】:

我有一个如下所示的 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("如果存在记录则更新表") sqlite3.OperationalError:靠近“TABLE”:语法错误

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

【问题讨论】:

    标签: pysqlite


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2020-08-16
      • 2012-10-29
      • 2013-02-23
      • 2020-02-20
      相关资源
      最近更新 更多