сбой sqlite завершается ошибкой синтаксиса - PullRequest
0 голосов
/ 19 сентября 2019

Учитывая таблицу 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, не могли бы вы посоветовать?

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