Вставка / обновление таблицы sqlite из программы Python - PullRequest
0 голосов
/ 12 августа 2011

У меня есть таблица 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 («ОБНОВЛЕНИЕ ТАБЛИЦЫ, ЕСЛИ ЗАПИСЬ СУЩЕСТВУЕТ»).код для обновления таблицы?

1 Ответ

0 голосов
/ 12 августа 2011

Ваш запрос SQL для UPDATE недействителен - см. документацию .

Кроме того, я не понимаю, почему вы хотите проверять существование таблицы при обновлении, учитывая, что непосредственно перед этим вы создаете ее, если она не существует.

Если ваша цель - обновить запись, если она существует, или вставить ее, если ее нет, вы можете сделать это либо:

  • Сначала выполните UPDATE и проверьте количество обновленных строк.Если 0, вы знаете, что запись не существует, и вам следует вместо этого INSERT.
  • Сначала выполните INSERT - если есть ошибка, связанная с нарушением ограничения, вы знаете, что запись уже существует, и вам следуетвместо этого сделайте UPDATE.
...