Как исправить синтаксическую ошибку при попытке использовать sqlite upsert? - PullRequest
1 голос
/ 02 февраля 2020

Я столкнулся с синтаксической ошибкой SQLite UPSERT, которую не могу понять / исправить. Я ссылаюсь на документацию по https://sqlite.org/lang_UPSERT.html

Пример кода:

import sqlite3
cnxn = sqlite3.connect(":memory:")
crsr = cnxn.cursor()
# Create a simple table with a Primary Key
crsr.execute("CREATE TABLE t (Id INTEGER PRIMARY KEY, Name TEXT)")
# Add a row
crsr.execute("INSERT INTO t(Id,Name) VALUES(1,'Fred')")
# I would expect the following to update Name for Id=1
crsr.execute("INSERT INTO t(Id,Name) VALUES(1,'Sam') ON CONFLICT(Id) DO UPDATE SET Name=excluded.Name")

Вместо этого возвращается sqlite3.OperationalError: near "ON": syntax error Что я делаю не так?

1 Ответ

2 голосов
/ 02 февраля 2020

Синтаксис был правильным. Моя версия SQLite была недостаточно новой, чтобы воспользоваться ее функциональностью. К сожалению, обновление SQLite не так просто, как установка PIP --upgrade ...

Вот несколько полезных советов для других, которые могут столкнуться с этим:

Поиск текущей версии SQLite

import sqlite3
sqlite3.sqlite_version

Загрузите более новую версию (в данном случае 3.24+) с сайта загрузки SQLite: https://www.sqlite.org/download.html

Распакуйте, а затем сохраните .dll в [Python каталог установки] / папка DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...