#python #sql #sqlite
#питон #sql #sqlite
Вопрос:
Этот фрагмент кода не работает, и я не смог понять, почему:
db = get_db()
done = "1"
db.execute(
'UPDATE post'
'SET payment = (?)'
'WHERE unique_id = (?)',
(done, unique_id)
)
db.commit()
Это выдает мне эту ошибку:
Файл «/mnt/c/Users/Uvo/Desktop/JobApp/main_page.py «, строка 163, в stripe_webhook (готово, unique_id) sqlite3.OperationalError: рядом с «платежом»: синтаксическая ошибка
Я перепробовал много разных вещей, но безуспешно.
Ответ №1:
Используя SQLAlchemy, это должно сработать:
db = get_db()
done = "1"
db.execute(
'UPDATE post '
'SET payment =:payment '
'WHERE unique_id =:unique_id',
payment=done, unique_id=12345)
)
db.commit()
Обратите внимание, что столбец оплаты будет содержать запись «1». Если это должен быть идентификатор, пожалуйста, измените 12345 соответствующим образом:
db = get_db()
db.execute(
'UPDATE post '
'SET payment =:payment '
'WHERE unique_id =:unique_id',
payment='done', unique_id=1)
)
db.commit()
Комментарии:
1. Есть ли способ без использования SQLAlchemy и использования стандартного синтаксиса sqlite3?
2. И, кстати, в вашем примере есть дополнительная скобка. К сожалению, я безуспешно попробовал ваш ответ (я получаю это сообщение об ошибке: «TypeError: execute() не принимает аргументов ключевого слова»). В любом случае спасибо за ваше время.
Ответ №2:
Наконец-то я сам нашел простое решение: написать SQL-запрос в той же строке.
db = get_db()
db.execute('UPDATE post SET payment = "1" WHERE unique_id = (?)',
(unique_id,)
)
db.commit()