def decorator(method):
@wraps(method)
async def wrapper(*args, **kwargs):
async with self.async_session_maker() as session:
try:
# Устанавливаем уровень изоляции, если он указан
if isolation_level:
await session.execute(text(f"SET TRANSACTION ISOLATION LEVEL {isolation_level}"))
# Выполняем декорируемый метод
result = await method(*args, session=session, **kwargs)
# Выполняем коммит, если параметр commit=True
if commit:
await session.commit()
return result
except Exception as e:
await session.rollback() # Откатываем транзакцию при ошибке
raise e # Поднимаем исключение дальше
finally:
await session.close() # Закрываем сессию
return wrapper
return decorator
@property
def session_dependency(self) -> Callable:
"""
Зависимость FastAPI для внедрения сессии без управления транзакцией.
Возвращает:
- Зависимость для FastAPI, которая предоставляет асинхронную сессию `AsyncSession`.
"""
return Depends(self.get_db)
@property
def transaction_session_dependency(self) -> Callable:
"""
Зависимость FastAPI для внедрения сессии с управлением транзакцией.
Возвращает:
- Зависимость для FastAPI, которая предоставляет асинхронную сессию `AsyncSession`
с автоматическим управлением транзакцией (коммит или откат).
"""
return Depends(self.get_db_with_transaction)
# Создание экземпляра DatabaseSessionManager
session_manager = DatabaseSessionManager(async_session_maker)
# не делает коммит
SessionDep = session_manager.session_dependency
# делает коммит
TransactionSessionDep = session_manager.transaction_session_dependency
# Пример использования декоратора
# @db_manager.connection(isolation_level="SERIALIZABLE", commit=True)
# async def example_method(*args, session: AsyncSession, **kwargs):
# # Основная логика метода
# pass
Штуку одну готовлю универсальную. Решил что неудобно будет прыгать между получением сессии под FastApi и под обычные функции / хендлеры телеграмм ботов. Сегодня протестирую ее. Если коротко, то будет один пакет dao, который будет закрывать вообще все случаи жизни для использования SQLAlchemy)
🔥17❤3👍3
Друзья! Сегодня вышло глобальное обновление шаблона FastAPI + SQLAlchemy с полной поддержкой авторизации и аутентификации.
Кратко о главных изменениях:
- Реорганизована структура DAO, добавлен универсальный DatabaseSessionManager для управления сессиями.
- Поддержка транзакций и зависимостей FastAPI для гибкости в работе с базой данных.
- Упрощена конфигурация проекта и доступ к переменным окружения.
Полное описание всех изменений доступно в релизе.
Кратко о главных изменениях:
- Реорганизована структура DAO, добавлен универсальный DatabaseSessionManager для управления сессиями.
- Поддержка транзакций и зависимостей FastAPI для гибкости в работе с базой данных.
- Упрощена конфигурация проекта и доступ к переменным окружения.
Полное описание всех изменений доступно в релизе.
GitHub
Release Крупное обновление: Универсальное управление сессиями и реорганизация DAO · Yakvenalex/FastApiWithAuthSample
Релиз: Оптимизация и переработка системы сессий
Описание:
В данном релизе реализованы значительные улучшения в структуре и работе с сессиями для базы данных. Основные изменения связаны с переносом ...
Описание:
В данном релизе реализованы значительные улучшения в структуре и работе с сессиями для базы данных. Основные изменения связаны с переносом ...
❤🔥19🔥7👍5❤4
Добрый вечер🙋.
Для всех кто ждал - у меня хорошие новости. Статья выйдет в воскресенье (3-го ноября). Нужно вычитать на свежую голову😊
🔗 Ссылка на код проекта: GitHub
Для всех кто ждал - у меня хорошие новости. Статья выйдет в воскресенье (3-го ноября). Нужно вычитать на свежую голову😊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤7🔥5❤🔥2🥰2
Друзья, доброе утро! ☀️ Обещанная третья статья в цикле публикаций про асинхронную SQLAlchemy 2 уже вышла на Хабре, и её можно почитать прямо сейчас. Новая статья называется "Асинхронный SQLAlchemy 2: оптимизация кода, практики обновления и удаления данных".
В этой статье я:
✅ Оптимизирую базовый класс (BaseDao) и декоратор для сессий — делаю их более гибкими и эффективными.
✅ Объясняю обновление данных — от одиночных до массовых изменений записей в таблицах.
✅ Освещаю удаление данных — методы для работы с отдельными записями и группами данных.
Ссылка на статью и исходный код, использованный в примерах, закреплены под постом. 👇
Приятного чтения и продуктивного дня! 😊
🔗 Ссылка на статью: "Асинхронный SQLAlchemy 2: оптимизация кода, практики обновления и удаления данных"
🧑💻Ссылка на код проекта: GitHub
UPD: Ссылка на статью теперь корректная
В этой статье я:
✅ Оптимизирую базовый класс (BaseDao) и декоратор для сессий — делаю их более гибкими и эффективными.
✅ Объясняю обновление данных — от одиночных до массовых изменений записей в таблицах.
✅ Освещаю удаление данных — методы для работы с отдельными записями и группами данных.
Ссылка на статью и исходный код, использованный в примерах, закреплены под постом. 👇
Приятного чтения и продуктивного дня! 😊
🧑💻Ссылка на код проекта: GitHub
UPD: Ссылка на статью теперь корректная
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥14❤🔥8
Интересует ли вас изучение Flet (Flutter на Python), технологии, которая позволяет создавать кроссплатформенный фронтенд без использования JavaScript?
Anonymous Poll
72%
Да, очень интересно, хочу подробности!
7%
Знаком с Flet, но хочу узнать больше
21%
Нет, неинтересно
❤🔥8🔥3👍2❤1
Легкий путь в Python
Интересует ли вас изучение Flet (Flutter на Python), технологии, которая позволяет создавать кроссплатформенный фронтенд без использования JavaScript?
Я подумал, что просто обучение будет сильно скучно и решил это дело трансформировать в новый проект. Суть следующая.
На FastApi напишем простой API с регистрацией, авторизацией и некоторыми спец методами для проекта.
Далее, мы напишем фронт на чистом Flet, вообще не используя HTML + CSS + JS (мечта Python-разработчика).
Затем я покажу вам как прикручивать к Flet приложениям свой API и после мы сгенерируем приложение под следующие платформы: Desktop, WEB и Android.
Думаю получится интересно. Если тема пойдет, то можно будет отдельным мини-курсом уже подробно про Flet поговорить😉
На FastApi напишем простой API с регистрацией, авторизацией и некоторыми спец методами для проекта.
Далее, мы напишем фронт на чистом Flet, вообще не используя HTML + CSS + JS (мечта Python-разработчика).
Затем я покажу вам как прикручивать к Flet приложениям свой API и после мы сгенерируем приложение под следующие платформы: Desktop, WEB и Android.
Думаю получится интересно. Если тема пойдет, то можно будет отдельным мини-курсом уже подробно про Flet поговорить😉
🔥67👍8❤5🤩5
Забавная история. Сейчас пишу API и решил у ChatGPT поинтересоваться за простую библиотеку для асинхронной отправки сообщений в Telgram-бота (это под новый проект). Ответ на скрине. Забавно то, что это моя библиотека)
Вот так она выглядит в связке с зависимостями FastApi:
Кому интересно вот ссылка на библиотеку: GitHub.
Вот так она выглядит в связке с зависимостями FastApi:
@router.post('/send_text')
async def send_text(message: Message,
notifier: Notifier = Depends(get_notifier),
user_data: User = Depends(get_current_admin_user)):
try:
await notifier.send_text(message.text, settings.CHAT_ID)
return {"status": "success", "message": "Текстовое сообщение отправлено"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))Кому интересно вот ссылка на библиотеку: GitHub.
😁21❤9🔥6👍5👏3🤔1
Друзья, доброе утро👋
Из-за загруженности на прошлой неделе не получилось выходить в эфир. На этой неделе буду исправляться.
Новая статья будет посвящена проекту на Flet + FastApi. В рамках этого проекта мы напишем кросплатформенное приложение, которое завяжем на собственном API.
Реализуем такие методы:
- регистрация, аутентификации и авторизация
- отправка фото, файлов и текста через современный Material интерфейс (форма регистрации, авторизации, панель отправки сообщений) и сделаем мы это под разные уровни доступа.
Для тех кто не знает, Flet - это Flutter с мира Python. Библиотека для кросплатформенной разработки под Android, IOS, Desktop и WEB без использования нативных языков, таких как JavaScript, Java, Kotlin и т.д.
Мое мнение о технологии Flet оставлю в комментариях к этому посту👇
Из-за загруженности на прошлой неделе не получилось выходить в эфир. На этой неделе буду исправляться.
Новая статья будет посвящена проекту на Flet + FastApi. В рамках этого проекта мы напишем кросплатформенное приложение, которое завяжем на собственном API.
Реализуем такие методы:
- регистрация, аутентификации и авторизация
- отправка фото, файлов и текста через современный Material интерфейс (форма регистрации, авторизации, панель отправки сообщений) и сделаем мы это под разные уровни доступа.
Для тех кто не знает, Flet - это Flutter с мира Python. Библиотека для кросплатформенной разработки под Android, IOS, Desktop и WEB без использования нативных языков, таких как JavaScript, Java, Kotlin и т.д.
Мое мнение о технологии Flet оставлю в комментариях к этому посту👇
🔥21👍12❤🔥6
Друзья, добрый вечер🙋
Наконец-то у меня дошли руки завершить свой последний проект. Как и говорил, проект состоит из двух отдельных, но взаимосвязанных приложений: FastApi и Flet.
Для создания FastApi я использовал свой стартовый шаблон, о котором многие из вас уже знают, если следите за этим каналом. Для тех, кто еще не в курсе, расскажу, что я разработал и регулярно обновляю собственный стартовый шаблон для написания FastApi-приложений. В него уже встроены асинхронная SQLAlchemy, а также методы для регистрации и авторизации.
Кроме того, этот шаблон был расширен дополнительными API-методами, специально адаптированными для работы с Flet.
Что касается Flet, я выбрал его в качестве ключевого компонента пользовательского интерфейса, чтобы создать удобный и визуально привлекательный frontend для взаимодействия с серверной частью.
Подробная статья по этому проекту уже написана и будет опубликована завтра.
Ссылки на исходный код и на работающие приложения закрепил ниже👇
Наконец-то у меня дошли руки завершить свой последний проект. Как и говорил, проект состоит из двух отдельных, но взаимосвязанных приложений: FastApi и Flet.
Для создания FastApi я использовал свой стартовый шаблон, о котором многие из вас уже знают, если следите за этим каналом. Для тех, кто еще не в курсе, расскажу, что я разработал и регулярно обновляю собственный стартовый шаблон для написания FastApi-приложений. В него уже встроены асинхронная SQLAlchemy, а также методы для регистрации и авторизации.
Кроме того, этот шаблон был расширен дополнительными API-методами, специально адаптированными для работы с Flet.
Что касается Flet, я выбрал его в качестве ключевого компонента пользовательского интерфейса, чтобы создать удобный и визуально привлекательный frontend для взаимодействия с серверной частью.
Подробная статья по этому проекту уже написана и будет опубликована завтра.
Ссылки на исходный код и на работающие приложения закрепил ниже👇
👍15❤🔥10🔥7❤2
Вопросы, комментарии, предложения и сочувствия по поводу того, что пришлось написать полноценный проект на Flet😂👇
🐳6👍2🫡2
Доброе утро, друзья! ☀️ Статья опубликована!
В ней я разобрал, как с помощью Python и таких инструментов, как Flet и FastAPI, можно создавать кроссплатформенные приложения без необходимости использования других языков программирования, таких как JavaScript для веба или Swift для мобильных приложений. 🚀
Мы погрузимся в:
💎 Создание API с функциями авторизации, аутентификации и регистрации пользователей.
💎 Разработку фронтенда с формами для входа и регистрации, а также основной функциональной частью приложения.
Также я поделюсь своими мыслями о концепции Flet и ее практической жизнеспособности. 🤔
Ссылка на статью, исходный код и рабочие проекты закреплены под этим постом. Не пропустите! 📚✨
В ней я разобрал, как с помощью Python и таких инструментов, как Flet и FastAPI, можно создавать кроссплатформенные приложения без необходимости использования других языков программирования, таких как JavaScript для веба или Swift для мобильных приложений. 🚀
Мы погрузимся в:
💎 Создание API с функциями авторизации, аутентификации и регистрации пользователей.
💎 Разработку фронтенда с формами для входа и регистрации, а также основной функциональной частью приложения.
Также я поделюсь своими мыслями о концепции Flet и ее практической жизнеспособности. 🤔
Ссылка на статью, исходный код и рабочие проекты закреплены под этим постом. Не пропустите! 📚✨
🔥20❤🔥8👍6❤3👎1
Оставить комментарии к статье "Кроссплатформенные приложения на Python с Flet и FastAPI: Полное руководство по разработке" можно тут👇
Хабр
Кроссплатформенные приложения на Python с Flet и FastAPI: Полное руководство по разработке
Сегодня я покажу вам, что для создания полноценных кроссплатформенных приложений достаточно одного языка — Python. С помощью всего нескольких библиотек и фреймворков можно легко обойтись без...
👍15🔥5❤3
У новичков часто возникает путаница, когда речь идет о языках программирования, библиотеках и фреймворках🤯 Что из этого на чем пишется, как они отличаются друг от друга и в чем их предназначение — все это вызывает много вопросов.
В скором времени я подготовлю для вас небольшую методичку, которая поможет составить общую картину, расскажет о нативных языках и о том, как и для чего они применяются.
Будете ждать❓
В скором времени я подготовлю для вас небольшую методичку, которая поможет составить общую картину, расскажет о нативных языках и о том, как и для чего они применяются.
Будете ждать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👍16❤5❤🔥4🤩1💯1
методичка:_путеводитель_по_языкам_программирования_и_фреймворкам.pdf
1.2 MB
Обещанная методичка готова!
Название: Путеводитель по языкам и фреймворкам: как понять, что и на чем писать
Подзаголовок: Практическое руководство по выбору инструментов для разработки веб, мобильных и десктопных приложений
Старался максимально соответствовать названию и подзаголовку.
Буду рад обратной связи в виде комментариев и вопросов👇
Название: Путеводитель по языкам и фреймворкам: как понять, что и на чем писать
Подзаголовок: Практическое руководство по выбору инструментов для разработки веб, мобильных и десктопных приложений
Старался максимально соответствовать названию и подзаголовку.
Буду рад обратной связи в виде комментариев и вопросов👇
🔥41👏6❤4❤🔥2🤩1
Что нужно знать для универсальной разработки: только 2 языка – Python и Dart (Flutter) 🖥🚀
В процессе работы с Dart и Flutter пришел к выводу, что для полноценной разработки достаточно овладеть всего двумя языками. С помощью Python и Dart (Flutter) можно создавать мощный бэкенд и кроссплатформенные мобильные, веб и десктоп-приложения.
Это буквально и без преувеличения. Достаточно знать всего два языка, чтоб стать тем самым FullStack разработчиком, который сможет сделать буквально любое ПО, как со стороны бэкенда (API), так и со стороны фронтенда (десктоп приложения, мобильные приложения, веб-приложения).
Давайте разберемся, почему именно эти два языка идеально подходят для универсальной разработки. 👨💻
1. Python для бэкенда – универсальный выбор 🐍
Python давно зарекомендовал себя как один из самых популярных языков для серверной разработки. Почему он так хорош?
- Простота и гибкость: Python идеально подходит для разработки любых серверных решений – от API до масштабируемых веб-приложений.
- Большая экосистема: огромное количество библиотек и фреймворков (FastApi, Flask, SQLAlchemy) позволяет быстро создавать рабочие решения.
- Производительность: для большинства задач Python обеспечивает отличную скорость разработки при хорошем качестве кода.
Python – это отличный выбор для серверной логики и API, который будет легко интегрировать с любыми другими системами. 📡
На примере моей крайней статьи на Хабре я демонстрировал, что буквально за 20-30 минут можно написать API, который потом можно будет прикрутить к абсолютно любому фронтенду и тут не важно, речь про кросплатформенный Flutter или про нативный Swift.
2. Dart + Flutter для кроссплатформенных приложений 📱💻
Dart и Flutter – это мощный инструмент для создания приложений сразу для нескольких платформ. Вот почему:
- Кроссплатформенность: один код – приложения для iOS, Android, веб и десктопа (Windows, macOS, Linux). Это сильно сокращает время и ресурсы на разработку. 🌍
- Высокая производительность: Dart компилируется в нативный код, что позволяет создавать быстрые и плавные приложения. Особенно это важно для анимаций и интерфейсов, которые работают на 60 кадров в секунду. ⚡️
- Экономия времени и ресурсов: до 80-95% кода можно использовать повторно между платформами, что снижает затраты на разработку, тестирование и поддержку. 🕒💸
Dart + Flutter позволяют разработать полноценные кроссплатформенные приложения, не тратя время на создание отдельных версий для каждой платформы. Меньше разработчиков – больше эффективности! 🎯
Почему именно два языка? 🤔
- Python решает все задачи на сервере: от обработки данных до работы с базами данных.
- Dart + Flutter обеспечивают универсальный фронтенд для мобильных, веб- и десктоп-приложений, что экономит время и ресурсы.
Вместо того чтобы изучать десятки технологий, вы фокусируетесь на двух ключевых языках, которые покрывают 80% задач в разработке. ✨
Итог 🔑
Овладев Python для бэкенда и Dart с Flutter для фронтенда, вы получаете все необходимое для создания современных, высокопроизводительных и кроссплатформенных приложений. Это упрощает процесс разработки и делает его более экономичным и эффективным. 🚀
Как вам такой подход? Делитесь мнением в комментариях! 👇
В процессе работы с Dart и Flutter пришел к выводу, что для полноценной разработки достаточно овладеть всего двумя языками. С помощью Python и Dart (Flutter) можно создавать мощный бэкенд и кроссплатформенные мобильные, веб и десктоп-приложения.
Это буквально и без преувеличения. Достаточно знать всего два языка, чтоб стать тем самым FullStack разработчиком, который сможет сделать буквально любое ПО, как со стороны бэкенда (API), так и со стороны фронтенда (десктоп приложения, мобильные приложения, веб-приложения).
Давайте разберемся, почему именно эти два языка идеально подходят для универсальной разработки. 👨💻
1. Python для бэкенда – универсальный выбор 🐍
Python давно зарекомендовал себя как один из самых популярных языков для серверной разработки. Почему он так хорош?
- Простота и гибкость: Python идеально подходит для разработки любых серверных решений – от API до масштабируемых веб-приложений.
- Большая экосистема: огромное количество библиотек и фреймворков (FastApi, Flask, SQLAlchemy) позволяет быстро создавать рабочие решения.
- Производительность: для большинства задач Python обеспечивает отличную скорость разработки при хорошем качестве кода.
Python – это отличный выбор для серверной логики и API, который будет легко интегрировать с любыми другими системами. 📡
На примере моей крайней статьи на Хабре я демонстрировал, что буквально за 20-30 минут можно написать API, который потом можно будет прикрутить к абсолютно любому фронтенду и тут не важно, речь про кросплатформенный Flutter или про нативный Swift.
2. Dart + Flutter для кроссплатформенных приложений 📱💻
Dart и Flutter – это мощный инструмент для создания приложений сразу для нескольких платформ. Вот почему:
- Кроссплатформенность: один код – приложения для iOS, Android, веб и десктопа (Windows, macOS, Linux). Это сильно сокращает время и ресурсы на разработку. 🌍
- Высокая производительность: Dart компилируется в нативный код, что позволяет создавать быстрые и плавные приложения. Особенно это важно для анимаций и интерфейсов, которые работают на 60 кадров в секунду. ⚡️
- Экономия времени и ресурсов: до 80-95% кода можно использовать повторно между платформами, что снижает затраты на разработку, тестирование и поддержку. 🕒💸
Dart + Flutter позволяют разработать полноценные кроссплатформенные приложения, не тратя время на создание отдельных версий для каждой платформы. Меньше разработчиков – больше эффективности! 🎯
Почему именно два языка? 🤔
- Python решает все задачи на сервере: от обработки данных до работы с базами данных.
- Dart + Flutter обеспечивают универсальный фронтенд для мобильных, веб- и десктоп-приложений, что экономит время и ресурсы.
Вместо того чтобы изучать десятки технологий, вы фокусируетесь на двух ключевых языках, которые покрывают 80% задач в разработке. ✨
Итог 🔑
Овладев Python для бэкенда и Dart с Flutter для фронтенда, вы получаете все необходимое для создания современных, высокопроизводительных и кроссплатформенных приложений. Это упрощает процесс разработки и делает его более экономичным и эффективным. 🚀
Как вам такой подход? Делитесь мнением в комментариях! 👇
🔥29👍13❤6😱2
Легкий путь в Python pinned «Поддержите моё творчество ✨ Нравится канал? Поддержите меня, и я смогу создать ещё больше интересного контента. Ваш вклад — это моя мотивация!»
Легкий путь в Python
Поддержите моё творчество ✨ Нравится канал? Поддержите меня, и я смогу создать ещё больше интересного контента. Ваш вклад — это моя мотивация!
Ребята, всем кто поддержал - спасибо. От души)
❤16