Similar presentations:
Начало работы с базой данных для чат-бота
1.
Начало работы с базой данныхдля чат-бота
2.
Что должно быть выполнено натекущий этап:
Файл app.py созданы три
роутера.
В файле user_group создана
асинхронная функция get_admins:
Для чего нам нужна функция get_admins?
3.
Создана цепочка событий (FMS машины) в файле admin_private.Middlewares
Middlewares — связующее программное обеспечение. (промежуточное)
Request — Запрос.
Response - ответ.
4.
Aiogram позволяет использовать множество обработчиков событий черезсвязующее программное обеспечение.
Отличительная особенность aiogram это наличие двух слоев middlewares, до
и после фильтров.
Промежуточное программное обеспечение — это повторно используемое программное
обеспечение, которое использует шаблоны и фреймворки для устранения разрыва между
функциональными требованиями приложений и базовыми операционными системами, стеками
сетевых протоколов и базами данных.
Outer middleware — используется до фильтров.
Middleware — используется после фильтров.
Документация:
https://docs.aiogram.dev/en/latest/dispatcher/middle
wares.html
5.
BaseMiddleware — этоуниверсальный класс
промежуточного ПО.
В нём присутствуют три
аргумента:
Handler — обработчик.
Заключенный в цепочку ПО.
Event — событие.
Получаемые данные от
обработчиков.
Data — данные полученные от
аргументов обработчика.
6.
Из документации копируем код и переносим его в файл db.py.7.
Импортируем дополнительные функции из модуля typing8.
Регистрация промежуточного слоя (для внутреннего):В каком файле проводить регистрацию?
Верно. App.py
CounterMiddleware отсутствует от куда его импортируем?
9.
Добавим его в проект.Как видно из структуры middleware для его работы необходимо обращение к
обработчкику(хендлеру).
Переходим в файл admin_private.
Находим функцию: delete_product.
Изменим её
10.
В нашем словаре хранится единственное значение counter. Используем его.Тестируем:
Получаем права админа.
Используем команду удалить товар. Смотрим на вывод в терминале.
11.
Важные замечания:1) При использовании middleware обращение к обработчику обязательно.
2) Можно использовать разные типы middleware.
3) В коде мы обращались к admin_router. Но также можно обращаться непосредственно и
к диспетчеру (dp) используя метод update.
Тогда данный промежуточный слой будет иметь приоритетное значение.
12.
Подготовка к следующему шагу. Необходимо удалить все строки в файлах связанные сmiddleware.
Работа с базой данных
Импортируем модуль для работы с БД:
Pip install sqlalchemy
Ссылка на документацию: https://pypi.org/project/SQLAlchemy/
database