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