0

以下に示すように、sqlite3テーブルがあります

Record(WordID INTEGER PRIMARY KEY, Word TEXT, Wordcount INTEGER, Docfrequency REAL). テーブルが存在しない場合は、このテーブルにデータを作成して挿入します。それ以外の場合は、「Word」列のデータに基づいて「Wordcount」列のみが更新されるようにテーブルを更新します。次のような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 に答える