Задать вопрос
@alwaystried

Почему sql запрос не выполняется?

Добрый день! Возник небольшой каверз - sql запрос просто перестал выполнятся. Хоть я его и делал по аналогии того, что делал раньше, сейчас он решил не выполняться.

Код:
@dp.message_handler(content_types=ContentType.SUCCESSFUL_PAYMENT)
async def vip_sucess(message: types.Message):
    rank = "VIP"
    conn = await aiomysql.connect(host='localhost', port=3306, user='root', password='',
                              db='aiodb',
                              loop=loop)
    rank_install = "UPDATE users set rank = (%s) where teleid=(%s)" #<- именно этот заспрос не хочет выполняться 
    pin_install = "UPDATE users set pin = (%s) where teleid=(%s)"
    if message.successful_payment.invoice_payload == "vip":
        await message.answer("Спасибо за покупку! Ваш заказ успешно обработан")
        #################### EXPERIMENTAL AREA ######################
        pin = random.randint(100000, 999999)
        print("Сгенерирован пин-код -",pin)
        cur = await conn.cursor()
        await cur.execute(pin_install, (pin, teleid))
        await conn.commit()
        await cur.execute(rank_install, (rank, teleid))


Ошибка:

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rank = ('Стандартный') where teleid=(1100442)' at line 1")
  • Вопрос задан
  • 188 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Когда запрос спотыкается на имени таблицы или колонки, то сразу идем сюдой, и ищем наше имя колонки: https://dev.mysql.com/doc/refman/8.0/en/keywords.h... (только если после нее стоит буковка (R). Слово без неё проблем не вызывает)
И после этого идем читать про identifier quote character, https://dev.mysql.com/doc/refman/8.0/en/identifier...
Ответ написан
@nozzy
Symfony, Laravel, SQL, Python, Telegram
Не по сути вопроса, а по оптимизации. Почему бы не сделать один update?
UPDATE users set rank = (%s), pin = (%s) where teleid=(%s)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
А в вашей "аналогии" были круглые скобки вокруг мест для подстановки?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы