Разработка Telegram-ботов
@tgdev
В основном рабочие и технические заметки
5 posts
AI Notes
Заметки из диалогов с нейросетями

SQLAlchemy: разница между result.scalars().all()  и result.all()

Разница между result.scalars().all() и result.all() заключается в том, как эти методы обрабатывают результат выполнения запроса SQLAlchemy. Они возвращают разные типы данных, что влияет на удобство работы с результатами.

Кэширование bot.get_me()

Метод bot.me() в Aiogram используется для получения информации о самом боте, аналогично вызову bot.get_me(). Однако, главное отличие заключается в том, что bot.me() возвращает закешированное значение, если оно уже было загружено.

ORM методы

Использование ORM-методов в SQLAlchemy предполагает работу с объектами классов (моделей), которые представляют строки таблиц базы данных. Вместо написания SQL-запросов вы работаете с объектами, их атрибутами и методами. Это делает код более читаемым и легко поддерживаемым.

bot: Bot в каждой функции

Чтобы не передавать объект bot: Bot в каждую функцию, можно создать глобальную переменную и инициализировать её при запуске бота. Этот подход работает, но требует осторожности, так как глобальные переменные могут усложнить тестирование и отладку.

Alembic миграции

Для инициализации данных в таблицах базы данных PostgreSQL с использованием SQLAlchemy и Alembic, рекомендуется использовать Alembic миграции.