Учитывая таблицу SQLite
CREATE TABLE users (
username TEXT NOT NULL,
hashed_password TEXT NOT NULL,
disabled INTEGER DEFAULT 1,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE(username)
) ;
и запрос
Q = {
"sqlite": {
"upsert_user": """ INSERT INTO users(username, hashed_password, disabled, updated_at) VALUES(?,?,?,CURRENT_TIMESTAMP) ON CONFLICT(username) DO UPDATE SET hashed_password=?, disabled=?, updated_at=CURRENT_TIMESTAMP """
}
}
и кортеж, который описывает пользователя
user = ('awesome-username',
'$2b$12$55Nkrpw2Gz3p4yg8gD8XS.EmLOOdE5W3Hj3rkzmAsMrAYMm.swwfq',
0,
'$2b$12$55Nkrpw2Gz3p4yg8gD8XS.EmLOOdE5W3Hj3rkzmAsMrAYMm.swwfq',
0)
, когда я пытаюсь выполнить upsert /вставить user
with db_conn as conn:
conn.execute(
Q["sqlite"]["upsert_user"],
(
username,
hashed_password,
0,
hashed_password,
0,
)
)
Сбой с ошибкой
Traceback (most recent call last):
File "<ipython-input-13-63b5a41b8c7f>", line 43, in is_user_identity_managed
1
sqlite3.OperationalError: near "ON": syntax error
Обратите внимание, что я вставляю необработанный запрос в SQLite, он успешно выполняется.
Мой разумсобирается взорваться, выясняя, почему вышеперечисленное не работает в Python, не могли бы вы посоветовать?