hirotasoshu / admin_panel_sprint_1 Goto Github PK
View Code? Open in Web Editor NEWПроектная работа на первый спринт курса "Мидл Python-разработчик". Первая часть панели администратора на Django
Проектная работа на первый спринт курса "Мидл Python-разработчик". Первая часть панели администратора на Django
На прошлых этапах мы получили 2 улучшения в системе:
Необходимо разработать сервис, который позволит создавать и редактировать сущности из подготовленной схемы.
Основные этапы:
models
схему, разработанную на ранних этапах.models
для контент-менеджера.Основные сущности, которые должны присутствовать в сервисе.
Список полей для каждой сущности является обязательным, но не ограничивается строго — возможно, в процессе вы почувствуете необходимость что-то добавить.
Пользователь — электронная почта, логин, пароль, дата регистрации, система прав.
Фильм – заголовок, содержание, дата создания, возрастной ценз, режиссеры, актеры, сценаристы, жанры, ссылка на файл.
Сериал - заголовок, содержание, даты создания, режиссеры, актеры, сценаристы, жанры, ссылка на файл.
Актер — Имя, фамилия, его фильмы
Режиссер — Имя, фамилия, его фильмы
Сценарист — Имя, фамилия, его фильмы
Жанр — Описание
Эти требования необходимы для проверки работы индексов в вашей базе. При тестировании приложения с небольшим количеством записей мы не сможем проверить, правильно ли выполнена часть задания с индексами.
В предыдущем модуле вы реализовали механизм для для полнотекстового поиска. Теперь улучшим его: научим его работать
с новой схемой и оптимизируем количество элементов для обновления.
Здесь представлены все подсказки для работы создания ETL, которые могут быть полезны при выполнении задания:
logging
из стандартной библиотеки Python.Желаем удачи вам в написании ETL. Вы обязательно сможете осилить это!
Как только вы выполнили новые задания по работе с Postgres, к вам снова прибежал продакт. Он просит перенести уже заведённые карточки фильмы в новое хранилище, чтобы контент-менеджеры обновили недостающие описания, когда появится админка.
Совсем недавно вы спроектировали схему данных для Postgres, с которой гораздо проще работать, но SQLite всё так же живёт со сломанной схемой. Нужно аккуратно переложить данные, но при этом ничего не потерять при загрузке. Продакт верит, что вы сможете сделать это в ближайшие дни. Что ж, пришло время показать на что вы способны!
На первый взгляд задача выглядит простой: взять данные из одной базы и переложить в другую — даже бизнес-логики в этом нет! Но присмотритесь к задаче внимательно, ведь в ней полно важных моментов:
film_work
, genre
, person
, film_work_genre
, film_work_person
— из четырёх таблиц в SQLite — movies
, movie_actors
, actors
, writers
.Совет: воспользуйтесь способом, который вы использовали в бесплатной части курса.
movies
. Постарайтесь склеивать остальные таблицы с данными из таблицы movies — это может сильно помочь.dataclass
поможет быстро понять, где возникает ошибка при работе с данными.id
в таблицах Postgres лучше всего использовать uuid.uuid4()
.7 задание со звёздочкой :)
Денормализованные
{target="_blank"}
{target="blank"}
явно попало по ошибке, либо должна быть полная ссылка.
В проекте сейчас находится база данных с архитектурными ошибками.
В большинстве случаев технический долг тормозит развитие проекта и увеличивает его сложность. Избавьтесь от легаси в базе данных.
Для этого нам необходимо исправить ошибки, которые были допущены в схеме, с который вы работали в etl.
Проблемы, которые есть в текущей схеме, и оценка их критичности:
primary key
у таблицы movie_actors
. У вас не будет возможности искать записи, а также есть вероятность вставить дублирующие данные,{target="_blank"}
данные в таблице movies
. Для некоторых практических ситуаций это может быть полезно: меньше join'ов между таблицами. Однако это усложняет обновление данных. Например, если была найдена ошибка в каком-то из популярных жанров,writers
. Этот подход часто можно встретить в таких БД как MongoDB или Elasticsearch. SQLite — реляционная БД, поэтому предполагает иную работу с данными,writers
связаны с таблицей фильмов как ManyToMany
, но без промежуточной таблицы. Это очень усложняет дальнейшую склейку join
данных, чтобы, например, отправлять их в Elasticsearch.Ваша задача спроектировать новую схему для работы с данными, с которой будет удобно работать.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.