SQLAlchemy: SELECT и UPDATE запросы через ORM и Core #6

preview_player
Показать описание


0:00 - Select запрос через Core
4:09 - Защищаемся от SQL инъекций
7:54 - Update запрос через функцию update()
12:14 - Select через ORM
16:04 - Обновление моделей через ORM
18:33 - flush
22:17 - expire
25:05 - refresh
Рекомендации по теме
Комментарии
Автор

Такое впечатление, что тут пропущен видос.
Про scalars не было вообще ничего, а тут "напомню".
И именно объяснение этой штуки меня очень интересовало.
Да и Core VS ORM тоже не было...

IdE
Автор

Очень доступное объяснение. Талант к преподаванию!

asg
Автор

Супер! Очень интересно и с нетерпением ждем новых!

zhriopx
Автор

видно, что постарался над курсом. Помню, летом 2023 смотрел твои видео по фастапи и они мне сильно не понравились. В этом же курсе чувствуется опыт и работа. Однозначно лайк

hunterxvovik
Автор

Отличные видео, продолжай в том же духе!

emerald
Автор

Спасибо за урок👍. Отлично объясняешь 🤩. С нетерпением жду тему relationship💪

ocjvmtk
Автор

на 9:08 можно в where указывать TableName.column, а не TableName.c.column, по крайней мере в sqlalchemy version >2.0. Мне такой синтаксис больше нравится, так как работает автодополнение и есть подсветка

jqrshxj
Автор

Артем, привет, у тебя остался еще курс на степике по FastApi?

Habimbo
Автор

Спасибо, всё подробно обьяснил !
ВОПРОС - а не сброится ли наш primary_key если мы применим метод refresh перед коммитом в функции обновления воркера?
и получится так что апдейт будет искать ключи которых не существует..

ocsdjwn
Автор

Артем, привет!

Большое спасибо за курс!

Подскажи, пожалуйста, как определить, что лучше для проекта выбрать: SQLAlchemy Core или SQLAlchemy ORM? Что является более ограниченным по возможностям и может у тебя есть какие-нибудь ресурсы, где можно почитать про выбор кора или орм? Заранее спасибо!

scrpt
Автор

Здравствуйте, Артем. Получается, что если использовать query builder, а не сырой SQL, то мы по умолчанию защищены от SQL инъекций? Спасибо большое за видео. Я начинающий и для таких как я ваши видео очень полезны.

vladimirfesenko
Автор

Хочу обратить внимание, что согласно документации one_or_none() может возбудить ошибку при возврате более одной строки - MultipleResultError (с названием могу путать);

xacho
Автор

Курс очень нравится, но я не совсем понимаю, если мы используем ORM, то работаем через sessionmaker, а если с Core, то через engine? Или это просто совпадение? Ведь работает и так, и так. В чем отличие и как понять, что использовать? Заранее спасибо)

vasiliy
Автор

Выборка через where всегда требует .c. указывать? В документации не нашел конкретно про "c"
Кажется что "c" необходим для таблицы созданных через Table, а таблицы через Classname(Base) позволяет к полю id обращаться как к атрибуту модели.

Qustoos
Автор

Сделай пожалуйста следующее:

Есть допустим таблица User, у него email и username, оба unique=True, вопрос, при добавлении User, если вылетел exception UniqueConstraintFailed, как нам в алхимии понять какое именно поле не прошло проверку на уникальность

Biongar
Автор

А как в алхимии решается проблема N+1?

nateriver
Автор

привет! я новичок в sqlalchemy да и вообще в питоне, столкнулся с проблемой циклических импортов когда попытался связать 2 модели, есть модель User, есть модель UserRole, в User есть поле roles: Mapped[List[UserRole]], а в UserRole поле user: Mapped[User]. Ну и импортировав необходимые классы получил ошибку. Как вообще грамотно с таким бороться?

natpagle
Автор

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

awesomeex
Автор

я бы для ORM подхода добавил with_for_update(): foo = Почему? Чтобы на момент обновления строки в таблице она была заблокирована и конкурентная транзакция не смогла ее изменить еще как то.

BersGriffith