УРОКИ FASTAPI НА БОЕВОМ СЕРВИСЕ 1. MVP, СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ, МИГРАЦИИ ALEMBIC + ASYNC SQLALCHEMY

Поделиться
HTML-код
  • Опубликовано: 14 окт 2024

Комментарии • 114

  • @luchanos
    @luchanos  Год назад +16

    Актуальный хэш коммита для видео ветки main - d51c3625c5d3ebc21eeb5377c36cbff751739329
    Репозиторий - github.com/luchanos/luchanos_oxford_university

    • @stvJnK
      @stvJnK Год назад +5

      Удобнее когда ссылка в описании к ролику. Спасибо за видео урок!

    • @azamtoiri
      @azamtoiri Год назад

      Еще удобнее когда комментарий закреплен, Спасибо!

    • @luchanos
      @luchanos  Год назад

      @@azamtoiri мискузи, поправил

    • @ДанилЧерепухин
      @ДанилЧерепухин Год назад

      @@luchanos а продолжение когда будет?

  • @ВячеславСоколов-у2л

    Очень круто, что код к каждому ролику можно посмотреть.
    Обычно либо нет кода вообще, и все по роликам переписываешь, либо есть конечный код всего, в котором без сто грамм не разберёшься.
    Огромный респект за такой практический курс.

  • @alexeydanilov1557
    @alexeydanilov1557 6 месяцев назад

    Отличная подача материала - постепенное введение в тему и подробное объяснение 👍

  • @denissavast
    @denissavast Год назад +3

    Ну и молодец!!! Все четко и по существу, не прыгая по экранам. Огромное благодарю !

  • @evgends
    @evgends 5 месяцев назад +1

    "передаем параметр созвучный с тем полем которое мы хотим провалидировать" красиво сказано

  • @n_bazarov
    @n_bazarov Год назад +26

    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.
    А так в целом задел неплохой

  • @Tema-z2e
    @Tema-z2e 7 месяцев назад

    Спасибо огромное за качественный контент, очень подробно!

  • @ivan_inanych
    @ivan_inanych Год назад +2

    Нифига себе, мне тут надо тестовое сделать, думаю, у лухантоса точно есть что то по этой теме, смотрю - то что надо! и выложил 21 час назад)) как знал

  • @torikki-tou
    @torikki-tou Год назад +6

    Переменные окружения можно парсить с помощью BaseSettings из пайдентика

  • @bgs12
    @bgs12 Год назад

    огромное спасибо за детальное описание как все работает под капотом ))))

  • @artyomklg915
    @artyomklg915 Год назад +6

    а не удобнее ли будет брать сессию через Depends(from fastapi) и прокидывать в нее функцию(она есть в доках fastapi) который нам выкидывает yield сессии, а потом ее коммитит(в данном случае flush) чтоб не писать постоянно эти страшные with. Или это в асинхронном не работает? я просто не пробовал еще работать с асинхронной алхимией

    • @luchanos
      @luchanos  Год назад

      для меня это тоже первый опыт) во втором ролике я как раз depends добавил)

    • @stvJnK
      @stvJnK Год назад

      Или использовать декораторы запуска и остановки приложения.

  • @Anshegar
    @Anshegar 5 месяцев назад

    Офигенно!, пару интересных идей подчерпнул спасибо большое!

  • @Alexio_kor
    @Alexio_kor Год назад

    Отличное видео, лайк, подписка. Продолжаю смотреть уроки по FastApi

  • @maxjokar7920
    @maxjokar7920 Год назад +1

    Hi there,
    With pleasure waiting ur English contents. I can help u 👍🏻🤝

  • @realmanproject7529
    @realmanproject7529 Год назад +5

    Сразу лайкос

  • @georgedudaev8738
    @georgedudaev8738 Год назад

    @luchnos отличное начало! вот не понял почему в классе Юзер где создается таблица все типы просто указаны а boolean вызывается с помощью круглых скобок?

  • @d3en889
    @d3en889 Год назад

    Огонь! параллельно учусь всему и сразу на питоне)))) спасибо за практику, можно играться и вникать как работает 👍👍👍👍👍

  • @Айти_брат
    @Айти_брат Год назад

    выглядит мнрогообещающе=) качетвенный контент, спасибо большое

  • @konstant1n-t8j
    @konstant1n-t8j Год назад +2

    В Alembic для асинхронных миграций и автогенерации можно было запустить alembic init -t async

  • @ChallengeBeasts
    @ChallengeBeasts Год назад

    Крутой видос! Всё очень доступно и понятно изложено!

  • @evan_kirk
    @evan_kirk 29 дней назад

    А разве WSGI/ASGI - это не стандартизация интерфейса для взаимодействия нашего приложения с веб-сервером?

  • @bernardsoul8936
    @bernardsoul8936 2 месяца назад

    Хоспаде... Как же много кода в сравнении с Джанго)) Но будем прорываться через тернии к звездам))

  • @МаксимАндреев-я1г
    @МаксимАндреев-я1г Год назад +1

    один раз пробовал фастапи, сделал крад постов с картинками, авторизацией, всё думал довести до ума и не большой фронт симвалический накатить на реакте, как раз видос для освежения в памяти)

  • @only_prog-mk9tk
    @only_prog-mk9tk 4 месяца назад

    Для ubuntu команда сборки docker-compose будет через пробел. docker compose

  • @твойкомментатор-ц3о

    годно, честно, очень круто подал материал
    посмотрел на одном дыхании

  • @sashass099
    @sashass099 Год назад +2

    Лайк не глядя

  • @Deiffify
    @Deiffify Год назад +1

    Благодарю за знания! Успехов и развития 😊

  • @ETOVIDEOBLOG-c8u
    @ETOVIDEOBLOG-c8u Год назад

    Очень круто подаете информацию! Спасибо! Подписка и лайк)

  • @takecare-q8b
    @takecare-q8b 11 месяцев назад

    Хороший ролик, спасибо!

  • @yuriybukovskiy449
    @yuriybukovskiy449 Год назад

    Спасибо, Николай!!!! Не останавливайся!!!!

  • @Диванныйэксперт-р2е

    А на бусти есть реализация внутреннего чата для проекта на фастапи?
    Хочу проект сделать, но нужно чтобы пользователи могли переписываться друг с другом. Функционал чата минимальный, по типу внутреннего чата на авито.

  • @heavenyoung2590
    @heavenyoung2590 Год назад

    спасибо, полезный урок

  • @TheVenom20003
    @TheVenom20003 Год назад

    Отличный видеоролик , пожалуйста продолжайте

  • @metallurg42
    @metallurg42 Год назад +5

    Спасибо, отличное начало чего-то большого и интересного! Очень интересно будет услышать про реализацию аутентификации/авторизации и системы ролей. Собираешься для этих целей использовать готовые решения что-то вроде fastapi-users или писать свои велосипеды?) Планируется ли фронт для этого проекта, если да, то с использованием какого стека?

    • @luchanos
      @luchanos  Год назад +2

      фронт планирую, но пока не решил ещё в каком виде) мне потребуется помощь коллег для этого) что касается авторизации, то буду делать через JWT с использованием готовых решений) Чуть позже вы все увидите ;)

  • @psylo1841
    @psylo1841 Год назад +2

    А где ссылки на статьи на хабре?

  • @everlastingsummer2044
    @everlastingsummer2044 Год назад

    спасибо большое!

  • @ТимурНиколаев-я8ш
    @ТимурНиколаев-я8ш 10 месяцев назад

    спасибо тебе большое, купил курс, который оказался в разы хуже твоего бесплатного. Благо нашел тебя )

  • @azamtoiri
    @azamtoiri Год назад +1

    можно сделать регионы вместо блоков. Попытаюсь объяснить, в начале объявляешь #region: Name of region и в конце #endregion. Думаю что так будет красивее, но делай как удобнее )

  • @ВячаФродо
    @ВячаФродо 10 месяцев назад

    Что нужно предварительно сделать(либо установить), чтобы команда "% docker-compose -f docker-compose.yaml ud -d" выполнилась? Если это где-то на канале раньше рассматривалось, то скиньте ссылку на видео, пожалуйста.

  • @random_act
    @random_act 10 месяцев назад

    У Вас талант в создании презентаций

  • @ЕгорМиронов-щ3п
    @ЕгорМиронов-щ3п Год назад

    Нет статьи в описании, на базе которой сделан урок)

  • @mr.wayfarer6082
    @mr.wayfarer6082 16 дней назад

    Брух. Если работать с FastAPI + Pydantic, то логичнее всего было бы DB обвязку закончить моделями на SQLModel, а не голой алхимии.
    Помимо этого в 2к24 использовать голый pip это ужос ящитаю. Куда удобнее и проще раз настроить poetry.

  • @DevALine
    @DevALine Год назад

    Спасибо за контент! Продуктивные 50 мин👍

  • @СергейЮров-б6е
    @СергейЮров-б6е Год назад

    Круто-круто 👍

  • @fu7ur3gh057
    @fu7ur3gh057 Год назад

    офигенно!

  • @КонстантинРакдырович

    Будет ли проект соответствовать структуре описанной в репозитории fastapi best practices?

    • @David-yj5kv
      @David-yj5kv Год назад

      слышал мнение, что там не оч хорошая архитектура

    • @КонстантинРакдырович
      @КонстантинРакдырович Год назад

      @@David-yj5kv кажется, дело вкуса. Но субъективно для меня, архитектура указанная там более понятна

    • @vladvlad3544
      @vladvlad3544 Год назад

      Мне тоже кажется, что структура из best practices (аля Django) лучше. По крайней мере, лучше читаемая, как мне кажется.

  • @sinoikromov7322
    @sinoikromov7322 Год назад

    Круто ждём продолжение

  • @Anthony_Private
    @Anthony_Private Год назад

    Очень классно вышло)

  • @ivanpriz4547
    @ivanpriz4547 Год назад

    А что за туториал про фреймворк с нуля? Можно ссылку плиз?

  • @БлаговестНедков-ж5ы

    Топчик!

  • @666SeeR999
    @666SeeR999 11 месяцев назад

    Почему sessionmaker, а не async_sessionmaker?

  • @ВладимирБыков-ш1ь

    Для чего сейчас используют FastAPI, чаще для создания API или же можно и обычные веб-приложения с templates(html,css,js)?

    • @artem1736
      @artem1736 Год назад

      для создания API, но можно прикрутить и шаблоны с jinja

    • @ВладимирБыков-ш1ь
      @ВладимирБыков-ш1ь Год назад

      @@artem1736 да, я видел. Но на сколько это эффективно так делать? Есть ли вообще смысл делать приложения с фронтом на fastapi?

    • @artem1736
      @artem1736 Год назад +1

      @@ВладимирБыков-ш1ь ну лично мне кажется, что в таком случае логичнее использовать Фласк/Джанго

    • @MrLotrus
      @MrLotrus Год назад

      @@ВладимирБыков-ш1ь Мы же не знаем какое приложение вы хотите сделать. Если что-то современное и хоть сколько-нибудь сложное и кастомизируемое, лучше сразу делать как сейчас принято - отдельно апи и отдельно фронт на JS фреймворке.

    • @ВладимирБыков-ш1ь
      @ВладимирБыков-ш1ь Год назад

      @@MrLotrus я хотел узнать, стоит ли тратить время на этот Фреймворк, если планируешь делать веб-приложения с фронтом, а не только API.

  • @r35p3ct00
    @r35p3ct00 Год назад

    А веб на чем будет?

  • @vendorkont4141
    @vendorkont4141 4 месяца назад

    sessionmaker необходимо заменить на async_sessionmaker

  • @VGCor
    @VGCor Год назад

    А почему AQLAlchemy а не Ormar? Сам в этом не разбираюсь, просто слышал, что в обычной ОРМ есть модели и в пайдантик тоже, а в Ormar они объединены и, соответсвенно, кода для поддержки получается меньше в два раза.

    • @forsee2328
      @forsee2328 Год назад +1

      для современного Pydantic есть SQLModel, которая является надстройкой над алхимией и BaseModel

    • @Fartek2
      @Fartek2 Год назад +1

      @@forsee2328 что Ормар, что SQLModel накладывают ненужные ограничения и создают лишнею абстракция, я бы не рекомендовал к использованию

    • @forsee2328
      @forsee2328 Год назад +1

      @@Fartek2 Сам pydantic накладывает большое количество ограничений, зачастую для обработки данных модели приходится конвертировать в датаклассы или что нибудь такое. Очень сложно заставить некоторые механизмы языка работать с pydantic моделью, потому что, например, он переопределяет __setattr__, однако свою задачу эти модели выполняют идеально.
      Если у тебя нет комплексной логики, и все, что тебе нужно - например получить данные с эндпоинта, провалидировать и положить в бд - SQLModel будет отличным решением

    • @stvJnK
      @stvJnK Год назад

      Пробовал Ormar вроде надстройка на алхимией и был хорошей альтернативой пока алхимия не умела асинхронно работать, минус продукт свежий и было несколько раз после обновления приходилось почти все переписывать, в этом плане алхимия не значительно меняется.

  • @AlecsFly
    @AlecsFly Год назад +2

    Увидел импорты и уже плохо стало, что по PEP8?

    • @luchanos
      @luchanos  Год назад +1

      Не переживай, линтеры прикрутим

  • @skachkovalexandr1636
    @skachkovalexandr1636 Год назад

    Хорошо объясняет автор, но смотрел на скорости х1,5

  • @Antonio-ib6ii
    @Antonio-ib6ii Год назад

    А где видео про свой фреймворк с нуля? Не вижу в Вашем канале? На бусти?

    • @luchanos
      @luchanos  Год назад

      так вот же)) ruclips.net/video/AXCHg_S1JPY/видео.html

  • @ibrahimoglu
    @ibrahimoglu Год назад

    👍

  • @iliakaribski2150
    @iliakaribski2150 Год назад

    Предлагаю использовать fastapi-utils для создания class handler

  • @konstantintroitskiy4426
    @konstantintroitskiy4426 Год назад

    А зачем 2 драйвера asyncpg и psycopg2? Или алембик только с psycopg2 работать умеет?

    • @vladvlad3544
      @vladvlad3544 Год назад +1

      Нет, алембик через asyncpg тоже работает

  • @kanamagg
    @kanamagg 8 месяцев назад

    и непонятно почему в dbeaver порт localhost, если я ставлю такой порт то выходит ошибка, что неверный пароль

    • @РусланЧернов-ж5с
      @РусланЧернов-ж5с 8 месяцев назад

      ты решил эту проблемку? у меня такой же вопрос.....

    • @kanamagg
      @kanamagg 7 месяцев назад

      @@РусланЧернов-ж5с, Привет! Как-то решилось, уже не помню как, я все удалял, ставил заново. Но в следующих видео тоже что-то не шло и я уже сейчас больше просто смотрю и не прогаю)

    • @bernardsoul8936
      @bernardsoul8936 2 месяца назад

      скорее всего у тебя запущен postgres и локально, и в докер. возможно, ты пытаешься подключиться к бд не той, что в докер запущена

    • @kanamagg
      @kanamagg 2 месяца назад

      @@bernardsoul8936 спасибо за ответ

    • @ЕгорМиронов-щ3п
      @ЕгорМиронов-щ3п 2 месяца назад

      @@kanamagg да, скорее порт занят локальной Постгре или чем-то еще

  • @alexseydugin8109
    @alexseydugin8109 Год назад

    Начал смотреть, сразу резануло глаз: импорты не по PEP в пайчарме можно просто нажать ctrl+alt+o
    PS зашел в репу там щас все ок с этим :)

  • @dmitriynekrasov3098
    @dmitriynekrasov3098 Год назад

    А почему не воспользоваться библиотекой fastapi-users?

    • @luchanos
      @luchanos  Год назад

      потому что я про неё впервые слышу)) спасибо!)

    • @dmitriynekrasov3098
      @dmitriynekrasov3098 Год назад +1

      @@luchanos пожалуйста. Просто там из коробки уже все эндпоинты, сессии, куки, jwt и прочее. Меньше велосипедов будет :)

    • @oleksandr7201
      @oleksandr7201 Год назад

      Библиотека fastapi-users еще сырая: не предусмотрены refresh токены, нет подтверждения e-mail, ...
      Это все нужно будет допиливать самостоятельно

  • @PlagueisMKII
    @PlagueisMKII Год назад +3

    Во второй версии pydantic декоратор @validator переименовали в @field_validator, а orm_mode - в from_attributes, если у кого-то будут какие-то проблемы с этим.

    • @ВячаФродо
      @ВячаФродо 10 месяцев назад

      ..\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)
      Как решить эту проблему?

    • @PlagueisMKII
      @PlagueisMKII 10 месяцев назад

      @@ВячаФродо схему в студию.

  • @dedinside6275
    @dedinside6275 Год назад +1

    почти ничего не понял но очень интересно

  • @h3ckphy246
    @h3ckphy246 Год назад

    А UserDAL можно назвать репозиторием?

  • @fffffffff6862
    @fffffffff6862 Год назад

    это лучшее из того что есть на русском

  • @TechnoBog-ov2mp
    @TechnoBog-ov2mp Год назад +1

    Ужасно неприятно ставить psycopg2 (в т.ч. binary-версию) из-за вечных проблем с установкой

  • @mrKey881
    @mrKey881 Год назад

    FastAPI умеет энвы из коробки читать. Зачем envparse?

  • @denisk730
    @denisk730 Год назад

    +

  • @gapchannelAi
    @gapchannelAi Год назад

    Почему так мало лайков