585.32K
Category: databasedatabase

Начало работы с базой данных для чат-бота

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.

Импортируем дополнительные функции из модуля typing

8.

Регистрация промежуточного слоя (для внутреннего):
В каком файле проводить регистрацию?
Верно. 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/
English     Русский Rules