SQLAlchemy: Advanced RELATIONSHIPS | Indexes | Constraints #10

Поділитися
Вставка
  • Опубліковано 9 чер 2024
  • 💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gxT 💡
    Предзапись на курс по поиску работы разработчику и техническим навыкам для Middle: forms.gle/Zw7bPnQvTsfekVH47
    Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
    Все вопросы по SQLAlchemy обсуждаем в телеграм сообществе: t.me/python_community_rus
    Мой телеграм канал о жизни разработчика: t.me/artemshumeiko
    Полезные материалы для бэкендера в моем телеграм боте: t.me/ArtemShumeikoBot?start=eXQ
    Репозиторий на Github с кодом из видео: t.me/artemshumeiko/28
    Поддержать меня и получить ранний доступ к видео можно здесь: boosty.to/artemshumeiko
    Relationships - это основа ORM в Алхимии, которую должен знать каждый бэкендер.
    0:00 - back_populates
    2:15 - backref
    3:12 - primaryjoin (измененный join)
    9:12 - order_by (сортировка)
    9:55 - lazy (типы подгрузки)
    11:12 - contains_eager
    15:55 - Ограничение подгружаемых связей
    18:18 - Индексы и ограничения

КОМЕНТАРІ • 27

  • @artemshumeiko
    @artemshumeiko  7 місяців тому +1

    💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡
    Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot

  • @user-mz2hi1rg9b
    @user-mz2hi1rg9b 6 місяців тому +4

    Лайк не глядя.Тема очень актуальная и не раскрытая нигде нормально.Спасибо тебе большое )

  • @user-je6dz7vz4y
    @user-je6dz7vz4y 6 місяців тому +1

    Как всегда на высоте. Как Прометей, только несешь алхимию людям 😁.

  • @nateriver8261
    @nateriver8261 6 місяців тому +1

    Спасибо большое!

  • @daark0407
    @daark0407 6 місяців тому

    Артем, а вы не планируете в будущем снять видео по ddd архитектуре? я думаю, что это был бы очень полезный ролик.

  • @user-zl5sp9yh1n
    @user-zl5sp9yh1n Місяць тому

    Я правильно понимаю что в нашем ограничении подгружаемых записей на каждого воркера делается еще один подзапрос в бд чтобы вычленить первое резюме по критериям?

  • @user-ll2ev4zg7z
    @user-ll2ev4zg7z 6 місяців тому

    Артём, а это какой-то плагин дает такие подсказки по сигнатуре объекта при наведении мышки на него или VSC по-умолчанию?

    • @artemshumeiko
      @artemshumeiko  6 місяців тому

      по умолчанию в VSCode. Нужно только, чтобы работа велась в виртуальном окружении

  • @user-un2wj7si9j
    @user-un2wj7si9j 2 місяці тому +1

    В WorkersORM у resumes в relationship(back_populates="worker") указание на worker. В свою очередь, в ResumesORM у worker в relationship(back_populates="resumes") идет указание на resumes, и у нас не возникает в терминале предупреждения от Алхимии.
    Но когда мы в WorkersORM добавляем дополнительно resumes_parttime c back_populates="worker", предупреждение в терминале снова появляется.
    Что делать в таком случае? Ведь в back_populates нельзя указать resumes и resumes_parttime через запятую.

    • @captainkryuk1899
      @captainkryuk1899 2 місяці тому

      наверное уже поздно, но просто в дочернем классе укажи еще одно отношение с back_populates="resumes_parttime"

  • @evakuator8118
    @evakuator8118 6 місяців тому +1

    Круто!

  • @AS-fk5fw
    @AS-fk5fw 7 місяців тому +1

    за contains_eager большой респект 👍 неправильно понимал как работает этот метод

    • @artemshumeiko
      @artemshumeiko  7 місяців тому +1

      рад, что помог вам :)

  • @ellovich
    @ellovich 5 місяців тому

    Артем, запишите пожалуйста про бинарный Json (JSONB) в sqlalchemy

  • @VladyslavKoshyl
    @VladyslavKoshyl 6 місяців тому

    Привет, есть вопрос касаемо relationship между моделями из разных директорий. Как правильно задавать путь в таком случае? Например,
    creator: Mapped["src.auth.models.User"] = relationship("User", back_populates="created_rooms")
    created_rooms: Mapped[List["src.rooms.models.Room"]] = relationship("Room", back_populates="creator") я задаю две строки(+ForeignKey для one to many), но python почему-то ругается на то что "src" is not defined, пробую изменить директорию ещё на одну выше, всё так же, как мне с этим справиться? Пробовал делать также импорт каждого класса в папку, но получил ошибку circular import( заранее спасибо за все!

    • @artemshumeiko
      @artemshumeiko  6 місяців тому +1

      просто creator: Mapped["User"]

    • @user-rs7qb9yp9z
      @user-rs7qb9yp9z 3 місяці тому

      @@artemshumeiko
      orders: Mapped[list["Orders"]] = relationship(back_populates='users')
      при таком построении он хочет импорта модели Orders, но тогда будут циклические импорты

  • @georgiyveter6391
    @georgiyveter6391 6 місяців тому

    Кто может подсказать, как для Sqlite сделать, чтобы в числовое поле по умолчанию при вставке в БД поставлялось максимальное значение + 1? Например, я добавляю две записи, идёт постановка 1, 2. Потом я в третьей записи задаю сам это поле как 10. А потом в следующей автоматчики уже подставляется 11

    • @sxmrxk
      @sxmrxk 6 місяців тому

      CREATE TABLE ваша_таблица (
      ваше_числовое_поле INTEGER PRIMARY KEY AUTOINCREMENT,
      другие_поля TEXT
      );

    • @georgiyveter6391
      @georgiyveter6391 6 місяців тому

      @@sxmrxk нет, нужен не первичный ключ

  • @maisiq
    @maisiq 5 місяців тому +2

    В примерах между selectinload и contains_eager разница в результатах в том, что
    последний использует filter, а не в том, как они работают.
    Полагаю, что вы хотели показать, что если использовать filter + contains_eager, то выберутся то те worker'ы, у которых есть конкретные резюме (опять же, из-за фильтра), но contains_eager подгрузит в коллекцию worker'у не все резюме, а только те, что удовлятворяют условиям фильтра.
    [contains_eager + filter] В результате worker.resumes = [только с parttime]
    [selectinload + filter] В результате worker.resumes = [все резюме]
    Раздел в документации: Using contains_eager() to load a custom-filtered collection result
    Спасибо за курс). Сколько еще планируется уроков?

    • @artemshumeiko
      @artemshumeiko  5 місяців тому

      Вы все верно написали. Возможно, я не так выразился в видео.
      В курсе всего 13 уроков. Последний по Алембику выйдет в течение пары недель

  • @Guiscardqq
    @Guiscardqq 6 місяців тому

    8:01 если нужно указать несколько options, то их можно в один пихать через запятую