Очень круто, что код к каждому ролику можно посмотреть. Обычно либо нет кода вообще, и все по роликам переписываешь, либо есть конечный код всего, в котором без сто грамм не разберёшься. Огромный респект за такой практический курс.
1. Почему бы сразу не пропагандировать не приучать зрителей к ведению норм зависимостей посредством poetry? 2. У пайдантика есть модельки для сетингов, которые берут из енвов все указанные переменные: удобно, красиво, с моей точки зрения правильно 3. У session_maker надо выключить auto_commit и auto_flush 4. Зачем задавать в конфиге модельки orm_mode = True, если потом все равно руками передаешь все поля? SomeModel.from_orm(orm_data) или parse_obj_as(SomeModel, orm_data) 5. Отсутсвие коммита перед закрытием сессии, хотя по-сути авто коммит свое дело должен будет сделать, но его все вырубают для большего контроля со стороны пользователя, а не фреймворка 6. Но это для новичков будет тяжко, заюзать dependency injector, который все зависимости классов возьмет на себя, что в дальнейшем позволит упростить жизнь 7. Я бы еще в таблицу юзера добавил поле created_at и может еще last_login, раз уж есть is_actice. А так в целом задел неплохой
а не удобнее ли будет брать сессию через Depends(from fastapi) и прокидывать в нее функцию(она есть в доках fastapi) который нам выкидывает yield сессии, а потом ее коммитит(в данном случае flush) чтоб не писать постоянно эти страшные with. Или это в асинхронном не работает? я просто не пробовал еще работать с асинхронной алхимией
@luchnos отличное начало! вот не понял почему в классе Юзер где создается таблица все типы просто указаны а boolean вызывается с помощью круглых скобок?
один раз пробовал фастапи, сделал крад постов с картинками, авторизацией, всё думал довести до ума и не большой фронт симвалический накатить на реакте, как раз видос для освежения в памяти)
А на бусти есть реализация внутреннего чата для проекта на фастапи? Хочу проект сделать, но нужно чтобы пользователи могли переписываться друг с другом. Функционал чата минимальный, по типу внутреннего чата на авито.
Спасибо, отличное начало чего-то большого и интересного! Очень интересно будет услышать про реализацию аутентификации/авторизации и системы ролей. Собираешься для этих целей использовать готовые решения что-то вроде fastapi-users или писать свои велосипеды?) Планируется ли фронт для этого проекта, если да, то с использованием какого стека?
фронт планирую, но пока не решил ещё в каком виде) мне потребуется помощь коллег для этого) что касается авторизации, то буду делать через JWT с использованием готовых решений) Чуть позже вы все увидите ;)
можно сделать регионы вместо блоков. Попытаюсь объяснить, в начале объявляешь #region: Name of region и в конце #endregion. Думаю что так будет красивее, но делай как удобнее )
Что нужно предварительно сделать(либо установить), чтобы команда "% docker-compose -f docker-compose.yaml ud -d" выполнилась? Если это где-то на канале раньше рассматривалось, то скиньте ссылку на видео, пожалуйста.
Брух. Если работать с FastAPI + Pydantic, то логичнее всего было бы DB обвязку закончить моделями на SQLModel, а не голой алхимии. Помимо этого в 2к24 использовать голый pip это ужос ящитаю. Куда удобнее и проще раз настроить poetry.
@@ВладимирБыков-ш1ь Мы же не знаем какое приложение вы хотите сделать. Если что-то современное и хоть сколько-нибудь сложное и кастомизируемое, лучше сразу делать как сейчас принято - отдельно апи и отдельно фронт на JS фреймворке.
А почему AQLAlchemy а не Ormar? Сам в этом не разбираюсь, просто слышал, что в обычной ОРМ есть модели и в пайдантик тоже, а в Ormar они объединены и, соответсвенно, кода для поддержки получается меньше в два раза.
@@Fartek2 Сам pydantic накладывает большое количество ограничений, зачастую для обработки данных модели приходится конвертировать в датаклассы или что нибудь такое. Очень сложно заставить некоторые механизмы языка работать с pydantic моделью, потому что, например, он переопределяет __setattr__, однако свою задачу эти модели выполняют идеально. Если у тебя нет комплексной логики, и все, что тебе нужно - например получить данные с эндпоинта, провалидировать и положить в бд - SQLModel будет отличным решением
Пробовал Ormar вроде надстройка на алхимией и был хорошей альтернативой пока алхимия не умела асинхронно работать, минус продукт свежий и было несколько раз после обновления приходилось почти все переписывать, в этом плане алхимия не значительно меняется.
@@РусланЧернов-ж5с, Привет! Как-то решилось, уже не помню как, я все удалял, ставил заново. Но в следующих видео тоже что-то не шло и я уже сейчас больше просто смотрю и не прогаю)
Во второй версии pydantic декоратор @validator переименовали в @field_validator, а orm_mode - в from_attributes, если у кого-то будут какие-то проблемы с этим.
..\venv\Lib\site-packages\pydantic\_internal\_config.py:318: UserWarning: Valid config keys have changed in V2: * 'orm_mode' has been renamed to 'from_attributes' warnings.warn(message, UserWarning) Как решить эту проблему?
Актуальный хэш коммита для видео ветки main - d51c3625c5d3ebc21eeb5377c36cbff751739329
Репозиторий - github.com/luchanos/luchanos_oxford_university
Удобнее когда ссылка в описании к ролику. Спасибо за видео урок!
Еще удобнее когда комментарий закреплен, Спасибо!
@@azamtoiri мискузи, поправил
@@luchanos а продолжение когда будет?
Очень круто, что код к каждому ролику можно посмотреть.
Обычно либо нет кода вообще, и все по роликам переписываешь, либо есть конечный код всего, в котором без сто грамм не разберёшься.
Огромный респект за такой практический курс.
Отличная подача материала - постепенное введение в тему и подробное объяснение 👍
Ну и молодец!!! Все четко и по существу, не прыгая по экранам. Огромное благодарю !
"передаем параметр созвучный с тем полем которое мы хотим провалидировать" красиво сказано
1. Почему бы сразу не пропагандировать не приучать зрителей к ведению норм зависимостей посредством poetry?
2. У пайдантика есть модельки для сетингов, которые берут из енвов все указанные переменные: удобно, красиво, с моей точки зрения правильно
3. У session_maker надо выключить auto_commit и auto_flush
4. Зачем задавать в конфиге модельки orm_mode = True, если потом все равно руками передаешь все поля? SomeModel.from_orm(orm_data) или parse_obj_as(SomeModel, orm_data)
5. Отсутсвие коммита перед закрытием сессии, хотя по-сути авто коммит свое дело должен будет сделать, но его все вырубают для большего контроля со стороны пользователя, а не фреймворка
6. Но это для новичков будет тяжко, заюзать dependency injector, который все зависимости классов возьмет на себя, что в дальнейшем позволит упростить жизнь
7. Я бы еще в таблицу юзера добавил поле created_at и может еще last_login, раз уж есть is_actice.
А так в целом задел неплохой
4 пункт деприкейтет
Спасибо огромное за качественный контент, очень подробно!
Нифига себе, мне тут надо тестовое сделать, думаю, у лухантоса точно есть что то по этой теме, смотрю - то что надо! и выложил 21 час назад)) как знал
Переменные окружения можно парсить с помощью BaseSettings из пайдентика
огромное спасибо за детальное описание как все работает под капотом ))))
а не удобнее ли будет брать сессию через Depends(from fastapi) и прокидывать в нее функцию(она есть в доках fastapi) который нам выкидывает yield сессии, а потом ее коммитит(в данном случае flush) чтоб не писать постоянно эти страшные with. Или это в асинхронном не работает? я просто не пробовал еще работать с асинхронной алхимией
для меня это тоже первый опыт) во втором ролике я как раз depends добавил)
Или использовать декораторы запуска и остановки приложения.
Офигенно!, пару интересных идей подчерпнул спасибо большое!
Отличное видео, лайк, подписка. Продолжаю смотреть уроки по FastApi
Hi there,
With pleasure waiting ur English contents. I can help u 👍🏻🤝
Сразу лайкос
@luchnos отличное начало! вот не понял почему в классе Юзер где создается таблица все типы просто указаны а boolean вызывается с помощью круглых скобок?
Огонь! параллельно учусь всему и сразу на питоне)))) спасибо за практику, можно играться и вникать как работает 👍👍👍👍👍
выглядит мнрогообещающе=) качетвенный контент, спасибо большое
В Alembic для асинхронных миграций и автогенерации можно было запустить alembic init -t async
Крутой видос! Всё очень доступно и понятно изложено!
А разве WSGI/ASGI - это не стандартизация интерфейса для взаимодействия нашего приложения с веб-сервером?
Хоспаде... Как же много кода в сравнении с Джанго)) Но будем прорываться через тернии к звездам))
один раз пробовал фастапи, сделал крад постов с картинками, авторизацией, всё думал довести до ума и не большой фронт симвалический накатить на реакте, как раз видос для освежения в памяти)
Для ubuntu команда сборки docker-compose будет через пробел. docker compose
годно, честно, очень круто подал материал
посмотрел на одном дыхании
Лайк не глядя
Благодарю за знания! Успехов и развития 😊
Очень круто подаете информацию! Спасибо! Подписка и лайк)
Хороший ролик, спасибо!
Спасибо, Николай!!!! Не останавливайся!!!!
А на бусти есть реализация внутреннего чата для проекта на фастапи?
Хочу проект сделать, но нужно чтобы пользователи могли переписываться друг с другом. Функционал чата минимальный, по типу внутреннего чата на авито.
спасибо, полезный урок
Отличный видеоролик , пожалуйста продолжайте
Спасибо, отличное начало чего-то большого и интересного! Очень интересно будет услышать про реализацию аутентификации/авторизации и системы ролей. Собираешься для этих целей использовать готовые решения что-то вроде fastapi-users или писать свои велосипеды?) Планируется ли фронт для этого проекта, если да, то с использованием какого стека?
фронт планирую, но пока не решил ещё в каком виде) мне потребуется помощь коллег для этого) что касается авторизации, то буду делать через JWT с использованием готовых решений) Чуть позже вы все увидите ;)
А где ссылки на статьи на хабре?
спасибо большое!
спасибо тебе большое, купил курс, который оказался в разы хуже твоего бесплатного. Благо нашел тебя )
можно сделать регионы вместо блоков. Попытаюсь объяснить, в начале объявляешь #region: Name of region и в конце #endregion. Думаю что так будет красивее, но делай как удобнее )
Что нужно предварительно сделать(либо установить), чтобы команда "% docker-compose -f docker-compose.yaml ud -d" выполнилась? Если это где-то на канале раньше рассматривалось, то скиньте ссылку на видео, пожалуйста.
установить docker
У Вас талант в создании презентаций
Нет статьи в описании, на базе которой сделан урок)
Брух. Если работать с FastAPI + Pydantic, то логичнее всего было бы DB обвязку закончить моделями на SQLModel, а не голой алхимии.
Помимо этого в 2к24 использовать голый pip это ужос ящитаю. Куда удобнее и проще раз настроить poetry.
Спасибо за контент! Продуктивные 50 мин👍
Круто-круто 👍
офигенно!
Будет ли проект соответствовать структуре описанной в репозитории fastapi best practices?
слышал мнение, что там не оч хорошая архитектура
@@David-yj5kv кажется, дело вкуса. Но субъективно для меня, архитектура указанная там более понятна
Мне тоже кажется, что структура из best practices (аля Django) лучше. По крайней мере, лучше читаемая, как мне кажется.
Круто ждём продолжение
Очень классно вышло)
А что за туториал про фреймворк с нуля? Можно ссылку плиз?
Топчик!
Почему sessionmaker, а не async_sessionmaker?
Для чего сейчас используют FastAPI, чаще для создания API или же можно и обычные веб-приложения с templates(html,css,js)?
для создания API, но можно прикрутить и шаблоны с jinja
@@artem1736 да, я видел. Но на сколько это эффективно так делать? Есть ли вообще смысл делать приложения с фронтом на fastapi?
@@ВладимирБыков-ш1ь ну лично мне кажется, что в таком случае логичнее использовать Фласк/Джанго
@@ВладимирБыков-ш1ь Мы же не знаем какое приложение вы хотите сделать. Если что-то современное и хоть сколько-нибудь сложное и кастомизируемое, лучше сразу делать как сейчас принято - отдельно апи и отдельно фронт на JS фреймворке.
@@MrLotrus я хотел узнать, стоит ли тратить время на этот Фреймворк, если планируешь делать веб-приложения с фронтом, а не только API.
А веб на чем будет?
sessionmaker необходимо заменить на async_sessionmaker
А почему AQLAlchemy а не Ormar? Сам в этом не разбираюсь, просто слышал, что в обычной ОРМ есть модели и в пайдантик тоже, а в Ormar они объединены и, соответсвенно, кода для поддержки получается меньше в два раза.
для современного Pydantic есть SQLModel, которая является надстройкой над алхимией и BaseModel
@@forsee2328 что Ормар, что SQLModel накладывают ненужные ограничения и создают лишнею абстракция, я бы не рекомендовал к использованию
@@Fartek2 Сам pydantic накладывает большое количество ограничений, зачастую для обработки данных модели приходится конвертировать в датаклассы или что нибудь такое. Очень сложно заставить некоторые механизмы языка работать с pydantic моделью, потому что, например, он переопределяет __setattr__, однако свою задачу эти модели выполняют идеально.
Если у тебя нет комплексной логики, и все, что тебе нужно - например получить данные с эндпоинта, провалидировать и положить в бд - SQLModel будет отличным решением
Пробовал Ormar вроде надстройка на алхимией и был хорошей альтернативой пока алхимия не умела асинхронно работать, минус продукт свежий и было несколько раз после обновления приходилось почти все переписывать, в этом плане алхимия не значительно меняется.
Увидел импорты и уже плохо стало, что по PEP8?
Не переживай, линтеры прикрутим
Хорошо объясняет автор, но смотрел на скорости х1,5
А где видео про свой фреймворк с нуля? Не вижу в Вашем канале? На бусти?
так вот же)) ruclips.net/video/AXCHg_S1JPY/видео.html
👍
Предлагаю использовать fastapi-utils для создания class handler
А зачем 2 драйвера asyncpg и psycopg2? Или алембик только с psycopg2 работать умеет?
Нет, алембик через asyncpg тоже работает
и непонятно почему в dbeaver порт localhost, если я ставлю такой порт то выходит ошибка, что неверный пароль
ты решил эту проблемку? у меня такой же вопрос.....
@@РусланЧернов-ж5с, Привет! Как-то решилось, уже не помню как, я все удалял, ставил заново. Но в следующих видео тоже что-то не шло и я уже сейчас больше просто смотрю и не прогаю)
скорее всего у тебя запущен postgres и локально, и в докер. возможно, ты пытаешься подключиться к бд не той, что в докер запущена
@@bernardsoul8936 спасибо за ответ
@@kanamagg да, скорее порт занят локальной Постгре или чем-то еще
Начал смотреть, сразу резануло глаз: импорты не по PEP в пайчарме можно просто нажать ctrl+alt+o
PS зашел в репу там щас все ок с этим :)
А почему не воспользоваться библиотекой fastapi-users?
потому что я про неё впервые слышу)) спасибо!)
@@luchanos пожалуйста. Просто там из коробки уже все эндпоинты, сессии, куки, jwt и прочее. Меньше велосипедов будет :)
Библиотека fastapi-users еще сырая: не предусмотрены refresh токены, нет подтверждения e-mail, ...
Это все нужно будет допиливать самостоятельно
Во второй версии pydantic декоратор @validator переименовали в @field_validator, а orm_mode - в from_attributes, если у кого-то будут какие-то проблемы с этим.
..\venv\Lib\site-packages\pydantic\_internal\_config.py:318: UserWarning: Valid config keys have changed in V2:
* 'orm_mode' has been renamed to 'from_attributes'
warnings.warn(message, UserWarning)
Как решить эту проблему?
@@ВячаФродо схему в студию.
почти ничего не понял но очень интересно
А UserDAL можно назвать репозиторием?
это класс
@@твойкомментатор-ц3о я имел в виду это типо паттерн репозиторий?
это лучшее из того что есть на русском
Ужасно неприятно ставить psycopg2 (в т.ч. binary-версию) из-за вечных проблем с установкой
FastAPI умеет энвы из коробки читать. Зачем envparse?
+
Почему так мало лайков