ИСПОЛЬЗУЙ ЭТО ДЛЯ БАЗЫ ДАННЫХ! ПАТТЕРН РЕПОЗИТОРИЙ В ПИТОНЕ

Поделиться
HTML-код
  • Опубликовано: 8 апр 2022
  • Андрей Иванов - Питон
    Используйте мою ссылку в криптобирже OKEX и получите -10%:
    www.okx.com/join/PYTHONANDREY
    Мои курсы на UDEMY: www.udemy.com/user/andrey-iva...
    Пожертвования: www.donationalerts.com/r/pyth...
    Github: github.com/knucklesuganda
    Telegram канал: t.me/pypapyrus_ru
    Другие Видео по Python: ruclips.net/user/playlist?list...
    Канал на английском языке: ruclips.net/channel/UCeC9...
    Поставьте лайк и подпишитесь!
    #Python #Питон #программирование #programming

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

  • @sauvignonblanc5086
    @sauvignonblanc5086 2 года назад +17

    Может сразу записать туториал по чистой архитектуре на python?

  • @exe88cution
    @exe88cution 2 года назад +1

    Красиво, спасибо большое

  • @cs_dequeue
    @cs_dequeue 2 года назад +1

    Полезное видео, спасибо!👍

  • @zapokami
    @zapokami 3 месяца назад

    Спасибо, очень доступно

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

    А есть пример кода где связаны все вместе, pydantic, sqlalchemy и repository ?)

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

    А как же базовый класс репозитория общий для всех репозиториев ? Метод save зачем в этом классе ведь репозиторий это не про сохранение, надо только добавление и извлечение ? И главный вопрос как это тестировать без участия БД ? Тема репозитория не раскрыта

  • @TyurinOleg
    @TyurinOleg 2 года назад

    Привет! А как по твоему, корректно ли в репозиторий класть логику фильтрации?
    Например сделать метод list с параметрами вроде "возраст", " Город" И тд, и в этом методе реализовать базовый запрос "select * from table" И далее делать ифы на параметры для подстановки условий?
    If age:
    Query = query.where(user.age==age)
    Надеюсь суть вопроса понятна :-)
    Это же вроде как логика, но в тоже время относится к работе с данными..

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

      Есть паттерн помощник для репозитория, вот для таких случаев

  • @GliGlock
    @GliGlock 2 года назад

    Мега хорош

  • @AlexandrSpirit
    @AlexandrSpirit 2 года назад

    Вопрос:
    Если это абстракция для вынесения логики построения запроса. Можно ли сделать передачу модели и запроса для некоторых универсальных классов? Т.е. если есть запросы с фильтрами, одинаковыми для 1 и более моделей, то проще ведь сделать некий универсальный класс?

    • @PythononPapyrusRU
      @PythononPapyrusRU  2 года назад

      Я сделал видео про спецификации, нужно скорее их использовать: ruclips.net/video/akHi_2IiclQ/видео.html

    • @takiekakmi7532
      @takiekakmi7532 2 года назад

      Скорее проще написать абстрактный базовый класс, а вот уже потом писать какие-нибудь универсальные миксины... Это скорее всего так и будет примерно реализовано (либо мутить метаклассы имхо орм)))

  • @green1278dramost5
    @green1278dramost5 2 года назад +1

    Вопрос: обработку исключений, например, методу get() репозитория передан несуществующий ID, лучше выполнять в слое сервисов (services.py) ?

    • @PythononPapyrusRU
      @PythononPapyrusRU  2 года назад +1

      Лучше делать в сервисах, так как при исключениях идет какая-то логика

    • @green1278dramost5
      @green1278dramost5 2 года назад

      @@PythononPapyrusRU Благодарю

  • @user-df1bx3jl2c
    @user-df1bx3jl2c 2 года назад

    Вопрос: можно ли считать Managers в Django репозиториями? Вроде как я могу в менеджеры и весь crud единичной модели перенести, и разные query делать. Но встречаю очень много статей, где говорят, что в Django нет DDD, что в Django ActiveRecord. Можно ли считать, что я следую DDD, если все операции с бд у меня идут через менеджер (а в Django они именно через дефолтный менеджер идут как минимум)?

    • @PythononPapyrusRU
      @PythononPapyrusRU  2 года назад +1

      Скорее всего сделаю видео про это, но в Django очень сложно следовать DDD, а сам я не считаю что менеджеры это репозитории

    • @user-df1bx3jl2c
      @user-df1bx3jl2c 2 года назад +1

      @@PythononPapyrusRU тогда буду ждать видос!

    • @user-wd4hw6dy1i
      @user-wd4hw6dy1i 10 месяцев назад

      Не можешь, менеджеры для этого не предназначены, читай доку

  • @sigmazetamale
    @sigmazetamale 24 дня назад

    крутое видео, не нашел объяснения на java, пришел сюда. Единственное не понял отличия от dao при таком объяснении

    • @PythononPapyrusRU
      @PythononPapyrusRU  7 дней назад

      DAO больше относится к конкретной таблице, а Repository к абстракции. То есть на DAO могут быть уникальные для конкретной модели функции, а в Repository нет

  • @max_bstr
    @max_bstr 2 года назад

    Я могу ошибаться, но это же менеджеры моделей (в django)

  • @magomedmagomedov9168
    @magomedmagomedov9168 2 года назад +1

    Гарри Персиваль ставит лайк

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

    Очередной раз посмотрев, наконец-то вкурил.
    У меня в проекте слои роуты/фекторис/сервисы
    роуты - отвечают за роуты
    фекторис - бизнес логика
    сервисы - работа с БД (орм и т.д.)
    Переключение реализации. Скорее всего нужно использовать паттерн "стратегия". поверх слоя "репозитория". Например, у вас класс использует транзакции и ОРМ, а другой только SQL. Со стратегией будет проще переключиться

  • @AlexandrSpirit
    @AlexandrSpirit 2 года назад

    Может сразу пример на SQLAlchemy? Что бы начинающие могли переписать и сразу "ручками" попробовать в деле?

    • @PythononPapyrusRU
      @PythononPapyrusRU  2 года назад

      Скоро выйдет видео, нужно было про другие паттерны помимо репозитория рассказать