KeyError. Ошибка при добавлении значения в базу данных
Пытаюсь добавить значение в таблицу. При обычной последовательности действий: вопрос - ответ, ответ записывается успешно, ошибок не возникает, но если я пытаюсь сделать: вопрос - форматирование ответа - записать верный ответ, то возникает ошибка.
Вставляю код бота пайтона:
@dp.callback_query_handler(text='down_time', state=None)
async def down_tm_cb(call: CallbackData, state=None):
if call.data == 'down_time':
await bot.send_message(chat_id=call.from_user.id, text="Запиши время отбоя: ") #задаю вопрос
await call.message.delete()
await ProfileStateGroup.down_time.set()
@dp.message_handler(state=ProfileStateGroup.down_time)
async def time_down_st(message: types.Message, state: FSMContext):
async with state.proxy() as data:
try:
data['down_time'] = time.strptime(message.text, "%H:%M") #ставлю формат для ответа
await basa.cr_dw_tm(state) #сохраняю ответ, если формат
except ValueError:
await message.reply("Время некорректно! Введи еще раз: ")
else:
await message.reply('Отлично, я запомнил время отбоя! Что-то еще?', reply_markup=inkb)
#сюда тоже пробовала добавить добавление в бд, ошибка та же
await state.finish()
Теперь код sql на всякий случай:
async def cr_dw_tm(state):
async with state.proxy() as data:
cur.execute("INSERT INTO profile VALUES (?, ?, ?)", (0, data['down_time'], 0))
db.commit()
И вот ошибка, что выдает мне:
future: <Task finished name='Task-19' coro=<Dispatcher._process_polling_updates() done, defined at D:\project\foryou\pythonProject2\.venv\lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=KeyError('down_time')>
Traceback (most recent call last):
File "D:\project\foryou\pythonProject2\.venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 415, in _process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "D:\project\foryou\pythonProject2\.venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
return await asyncio.gather(*tasks)
File "D:\project\foryou\pythonProject2\.venv\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "D:\project\foryou\pythonProject2\.venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in process_update
return await self.message_handlers.notify(update.message)
File "D:\project\foryou\pythonProject2\.venv\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "D:\project\foryou\pythonProject2\foryou.py", line 93, in time_down_st
await basa.cr_dw_tm(state)
File "D:\project\foryou\pythonProject2\basa.py", line 23, in cr_dw_tm
cur.execute("INSERT INTO profile VALUES (?, ?, ?)", (0, data['down_time'], 0))
File "D:\project\foryou\pythonProject2\.venv\lib\site-packages\aiogram\dispatcher\storage.py", line 439, in __getitem__
return self._data[item]
KeyError: 'down_time'
Хотя, если не ставить форматирование данных для ответа, то все проходит успешно. Покажу пример этой части:
@dp.callback_query_handler(text='happy_stat', state = None)
async def callback_query_keyboard(call: CallbackData, state=None):
if call.data == 'happy_stat':
await bot.send_message(chat_id=call.from_user.id, text='Запиши свое настроение: ')
await call.message.delete()
await ProfileStateGroup.happy_stat.set()
#await create_happy_stat(user_id=call.from_user.id)
@dp.message_handler(content_types='text', state=ProfileStateGroup.happy_stat)
async def happy_stat_st(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['happy_stat'] = message.text
await message.reply('Отлично, я записал твою оценку! Чем-то еще могу помочь?', reply_markup=inkb)
await basa.cr_hp_st(state)
await state.finish()
и sql:
async def cr_hp_st(state):
async with state.proxy() as data:
cur.execute("INSERT INTO profile VALUES (?, ?, ?)", (0, 0, data['happy_stat']))
db.commit()
Не понимаю, в чем ошибка? что не так?
Тип у столбцов в таблице: VARCHAR