Есть код бота, который отрабатывает корректно:
from aiogram import executor
from dispatcher import dp
import handlers
from db import BotDataBase
BotDataBase = BotDataBase('accountant.db')
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)
В папке проекта находятся несколько баз данных. Они идентичны, внутренне ничем не отличаются. Только разные названия. Созданы обычным копипастом друг друга.
Проблема. Делаю следующие шаги:
1. Я в коде меняю подставляю название другой БД, например:
BotDataBase = BotDataBase('new_accountant.db)
2. Запускаю код (запускается без ошибок).
3. Пишу боту команду добавления записи в БД (например earned/ 1000)
Ожидаемый результат:
Запись добавляется в new_accountant.db, и бот пишет что все ок.
Фактический результат:
Запись не добавляется в new_accountant.db, бот молчит, а Pycharm выдает ошибку:
INFO:aiogram:Bot: Head_of_Accounting [@Head_of_Accounting_Bot]
WARNING:aiogram:Updates were skipped successfully.
INFO:aiogram.dispatcher.dispatcher:Start polling.
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-18' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=TypeError("'NoneType' object is not subscriptable")>
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python311\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 "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
return await asyncio.gather(*tasks)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in process_update
return await self.message_handlers.notify(update.message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\TgAccountingBot_1\handlers\personal_actions.py", line 29, in start
BotDataBase.add_record(message.from_user.id, operation, value)
File "C:\Users\User\PycharmProjects\TgAccountingBot_1\db.py", line 27, in add_record
(self.get_user_id(user_id),
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\TgAccountingBot_1\db.py", line 17, in get_user_id
return result.fetchone()[0]
~~~~~~~~~~~~~~~~~^^^
TypeError: 'NoneType' object is not subscriptable
Возвращаю название БД на то, которое и было (accountant.db) и все снова в норме.
Не могу понять как связана ошибка
return result.fetchone()[0]
TypeError: 'NoneType' object is not subscriptable
с подстановкой другой, совершенно идентичной БД, у которой просто другое название.
Подскажите, как пофиксить баг?