SQLAlchemy №9. Relationships. Виды связей, стратегии загрузки.
HTML-код
- Опубликовано: 4 июл 2024
- Первый русскоязычный видеокурс о SQLAlchemy! Данный видеокурс основан на книге "SQLAlchemy от чайника к алхимику", которая представляет из себя перевод официального туториала от разработчиков алхимии. Данная книга распространяется бесплатно и общедоступно в двух вариантах:
PDF-версия: t.me/massonnn_yt/133
Веб-версия: massonnn.notion.site/SQLAlche...
Если вы хотите, чтобы я сделал ревью вашего проекта, то напишите об этом в моем дискорде:
/ discord
Мой телеграмм канал:
t.me/massonnn_yt
Таймкоды:
0:00 - Начало
0:45 - Виды связей
1:49 - Таблица ассоциаций (secondary)
2:30 - Переходим к коду. One-to-one.
9:44 - Many-to-one
13:36 - Lazy load и проблема N+1
14:30 - Many-to-many и таблица ассоциаций
20:30 - Стратегии загрузки
24:03 - Замеры разных стратегий. Когда какую использовать?
30:37 - Кратко о выборе стратегии
--------------------
Данное видео было сделано бесплатно, не содержит рекламы и не пытается что-то продавать. Если вам кто-то что-то предлагал, то имейте ввиду - это мошенники.
Вы можете поддержать автора, если он вам чем-то помог:
Если вы из России или стран СНГ:
410011676049152 (yoomoney)
2200700702094680 (Тинькофф)
Если вы из Украины:
5457082270647394 (ПриватБанк)
Криптовалюты:
ltc1qm6lx5e8q8ff7hs5ne2yxskhs2jhdl6ludq4ud8 (LTC / Litecoin)
bc1qfz7399jdqrxkpmmxyetk0frdskwv23k6p4yhdu (BTC)
0x95643B2702d1C4b965c1451C3f9bAAE7FF35115D (ETH)
TAc1WsbgAeB3UY4LrsfoshkTNHzTF1zqj5 (Tether USD-T) Наука
Друг, очень хороший контент. И еще лучше, что есть pdf и web-книга. Посмотрел и прочел. Очень серьезная большая работа тобой проделана. Приятно слушать грамотную речь с примерами. Спасибо тебе.
Спасибо за курс! По делу, без воды
хорошее объяснение, спасибо за контент
Наконец-то я нашёл это! Спасибо!
Хорошее видео. Ждём alembic.
Интересно ещё посмотреть вставку данных в несколько таблиц с разными связями между собой.
И тему каскадов разобрать.
Вставка данных в данном видео была разобрана, остальное делается по аналогии. Тема каскад была мной вынесена из ролика, поскольку слишком много времени на нее уйдет, а пользы она даст не так уж и много. Если человек уже знает SQL (а данный курс предполагает это), то человек уже сможет реализовать несколько каскад силами SQL, например ForeignKey.ondelete или ForeignKey.onupdate
Спасибо
Очень полезно
Чел спасибо большое
Всё ещё очень ждём видео про alembic. Выпусти пожалуйста :)
Пока оно не в приоритете, но точно будет
Отличная серия роликов, спасибо. Какой в них используется редактор и что за подсветка?
PyCharm Professional, Github Contrast Light
При selectin каскадно загружаются другие связи? Например, если бы у адреса был FK, то при запросе пользователя было бы обращение рекурсивно для всех связей?
И как в данном случае будет с joinload?
Это зависит от настроек связи для подтягивающихся моделей
Ещё очень хотелось бы посмотреть просложные запросы, если в таблице-связке будут не только id из двух таблиц которые она связывает, а ещё будут например статус, дата и т.д.
в таком случае нужно будет обратиться к функционалу Core и обращаться напрямую к таблице ассоциаций
Срочный вопрос... Никак не найду, как сделать связь по цепочке через 3-4-5 таблиц?
Пробовал association proxy, но оно будто бы только через 1 прокси-таблицу прокидывает связь, а мне надо через 2-3...
Например, у меня есть такая цепочка: Grandfather
Типичная связь Many-to-Many. Сделайте таблицу ассоциаций (first, second, type), где type - это кем приходится персона first персоне second. Далее создавайте relationship как в обычной many-to-many, но создайте их несколько чтобы можно было отделить их по типу. Условие на тип добавьте в primaryjoin.
@@massonnn Мне казалось, что Many-to-Many - это, когда в обе стороны связь может приводить ко множеству объектов. Например, города и жители: в одном городе живёт огромное число людей, а один и тот же человек может менять переезжать или постоянно жить на 2-3 города... Я даже не смотрел в сторону Many-To-Many.
Тут ведь у Son только один Father и Grandfather. Вы уверены?
@@massonnn Просто если у Son будет прямая связь (пусть даже через таблицу ассоциаций) с Grandfather, минуя User и Father и созданную цепочку One-To-Many relationships, это создаёт возможность человеческой ошибки.
Можно указать другого Grandfather, нежели тот, который находится по прямой цепочке. Разве это допустимо? Так-то я просто могу создать relationship в Son и ссылку по FK на Grandfather, да и вообще у всех ссылку эту сделать... Но запросто потом будет путаница, где у Son - один Grandfather, а у его Father и User - другие...
Неужели нельзя прокинуть связь, основывающуюся на цепочке уже существующих прямых One-To-Many relationships?
@@user-ei1by3ye6o Вы создаете не таблицу ассоциаций между Son-father или father-grandfather, вы создаете таблицу родственных связей, где каждый человек может приходиться каждому другому кем-либо (отец, сын и т.д.). Поэтому здесь применима many-to-many, тем более что у отца может быть несколько сыновей. В случае с отцом у сына, можно добавить CheckConstraint и ограничить появление второго отца у сына. Но всё это все равно в рамках m2m
А что в контексте запросов отражает дисперсия?
Что значит в контексте запросов? Дисперсия это показатель разброса результатов в статистике. Меньше дисперсия - меньше разница между самым большим и самым маленьким результатом в серии.
Видосы топовые, но по просмотру остался важный вопрос - понимание, что такое core не сформировалось. Только досмотрев до таблицы с замерами понял, что core это дикая штуковина, но что ее отличает от ORm - в обоих случаях используется одинаковый синтаксис составления запроса, разница лишь в том, что в Core запросы отправляются через Connection, в ORm через session - эта единственная разница, которую мог заметить
ORM - это надстройка над Core, которая сильнее абстрагирует сущности базы данных, и забирает на себя работу по составлению SQL запросов. В Core запросы мы должны собирать сами с помощью query-билдера. Подробнее о Core говорилось в самом первом ролике курса.
А когда будет продолжение?
Следующий ролик пока не в приоритете, но точно будет
А когда Alembic?
В достаточно ближайшей перспективе
One2many - не, не слышал)))видео явно для нубов)
Видео предполагает что его будут смотреть не самые опытные разработчики