@MarkSmersh

Почему не применяются изменения в mysql?

def scripts_send_messages_1(update: Update, context: CallbackContext):
    chat_id = update.callback_query.from_user['id'] #int значение
    mydb = mysql.connector.connect(
        host = 'host ',
        user = 'user',
        password = 'password',
        database = 'database')
    dbc.execute (f'SELECT vk_id FROM user WHERE chat_id={chat_id}') #dbc = mydb.cursor() (глобальная переменная)
    user_vk_id = dbc.fetchone()[0] #int значение
    dbc.execute = ('INSERT INTO history (thread_type, chat_id, vk_id, method) VALUES (%s, %s, %s, %s)'
                  % ('messages_send', chat_id, user_vk_id, 0))
    mydb.commit()
    bot.send_message (text = 'Отправьте *ссылку на группу* из которой будут использоваться посты:',
                      chat_id = chat_id,
                      parse_mode = ParseMode.MARKDOWN)
    return REPLY_IDS_GROUP


SELECT работает нормально
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 2
ScriptKiddo
@ScriptKiddo
Курсор dbc - от другого соединения, а коммит вы делаете для локального соединения mydb.

Создайте локальный курсор и выполняйте запросы с его помощью
Ответ написан
@MarkSmersh Автор вопроса
Я решил в MySQL Workbench сделать ставку вручную, в таблицу + одно из значений было не совсем int, но это не помешало вставке работать. После этого всё начало работать. Я понимаю, что в этом нет никакой логики, но факт остаётся фактом. Итоговый код выглядит вот так:
def scripts_send_messages_1(update: Update, context: CallbackContext):
    chat_id = update.callback_query.from_user['id']
    mydb = mysql.connector.connect(
        host = 'host ',
        user = 'user ',
        password = 'password ',
        database = 'database ')
    dbc = mydb.cursor()
    dbc.execute (f'SELECT vk_id FROM user WHERE chat_id={chat_id}')
    user_vk_id = dbc.fetchone()[0]
    sql = 'INSERT INTO history (thread_type, chat_id, vk_id, method) VALUES (%s, %s, %s, %s)'
    val = ('messages_send', chat_id, int(user_vk_id), 0)
    dbc.execute(sql, val)
    mydb.commit()
    bot.send_message (text = 'Отправьте *ссылку на группу* из которой будут использоваться посты:',
                      chat_id = chat_id,
                      parse_mode = ParseMode.MARKDOWN)
    return REPLY_IDS_GROUP
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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