ИСПОЛЬЗУЙ ЭТО ДЛЯ БАЗЫ ДАННЫХ! ПАТТЕРН РЕПОЗИТОРИЙ В ПИТОНЕ
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
Может сразу записать туториал по чистой архитектуре на python?
Красиво, спасибо большое
Полезное видео, спасибо!👍
Спасибо, очень доступно
А как же базовый класс репозитория общий для всех репозиториев ? Метод save зачем в этом классе ведь репозиторий это не про сохранение, надо только добавление и извлечение ? И главный вопрос как это тестировать без участия БД ? Тема репозитория не раскрыта
А есть пример кода где связаны все вместе, pydantic, sqlalchemy и repository ?)
Мега хорош
Привет! А как по твоему, корректно ли в репозиторий класть логику фильтрации?
Например сделать метод list с параметрами вроде "возраст", " Город" И тд, и в этом методе реализовать базовый запрос "select * from table" И далее делать ифы на параметры для подстановки условий?
If age:
Query = query.where(user.age==age)
Надеюсь суть вопроса понятна :-)
Это же вроде как логика, но в тоже время относится к работе с данными..
Есть паттерн помощник для репозитория, вот для таких случаев
крутое видео, не нашел объяснения на java, пришел сюда. Единственное не понял отличия от dao при таком объяснении
DAO больше относится к конкретной таблице, а Repository к абстракции. То есть на DAO могут быть уникальные для конкретной модели функции, а в Repository нет
Вопрос: обработку исключений, например, методу get() репозитория передан несуществующий ID, лучше выполнять в слое сервисов (services.py) ?
Лучше делать в сервисах, так как при исключениях идет какая-то логика
@@PythononPapyrusRU Благодарю
Вопрос:
Если это абстракция для вынесения логики построения запроса. Можно ли сделать передачу модели и запроса для некоторых универсальных классов? Т.е. если есть запросы с фильтрами, одинаковыми для 1 и более моделей, то проще ведь сделать некий универсальный класс?
Я сделал видео про спецификации, нужно скорее их использовать: ruclips.net/video/akHi_2IiclQ/видео.html
Скорее проще написать абстрактный базовый класс, а вот уже потом писать какие-нибудь универсальные миксины... Это скорее всего так и будет примерно реализовано (либо мутить метаклассы имхо орм)))
Гарри Персиваль ставит лайк
Вопрос: можно ли считать Managers в Django репозиториями? Вроде как я могу в менеджеры и весь crud единичной модели перенести, и разные query делать. Но встречаю очень много статей, где говорят, что в Django нет DDD, что в Django ActiveRecord. Можно ли считать, что я следую DDD, если все операции с бд у меня идут через менеджер (а в Django они именно через дефолтный менеджер идут как минимум)?
Скорее всего сделаю видео про это, но в Django очень сложно следовать DDD, а сам я не считаю что менеджеры это репозитории
@@PythononPapyrusRU тогда буду ждать видос!
Не можешь, менеджеры для этого не предназначены, читай доку
Я могу ошибаться, но это же менеджеры моделей (в django)
Очередной раз посмотрев, наконец-то вкурил.
У меня в проекте слои роуты/фекторис/сервисы
роуты - отвечают за роуты
фекторис - бизнес логика
сервисы - работа с БД (орм и т.д.)
Переключение реализации. Скорее всего нужно использовать паттерн "стратегия". поверх слоя "репозитория". Например, у вас класс использует транзакции и ОРМ, а другой только SQL. Со стратегией будет проще переключиться
Может сразу пример на SQLAlchemy? Что бы начинающие могли переписать и сразу "ручками" попробовать в деле?
Скоро выйдет видео, нужно было про другие паттерны помимо репозитория рассказать