SQLAlchemy: SELECT and UPDATE queries with ORM vs CORE #6

  Рет қаралды 20,317

Артём Шумейко

Артём Шумейко

Күн бұрын

Пікірлер: 35
@artemshumeiko
@artemshumeiko Жыл бұрын
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡 Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot Пишу про лайфхаки при поиске работы, рынок труда и способы развития разработчиков в TG канале - подписывайся: t.me/artemshumeiko Вступай в Python-сообщество (здесь можно задать любой вопрос): t.me/python_community_rus
@coryphoenixxx8238
@coryphoenixxx8238 10 ай бұрын
Поправь порядок видосов в плейлисте
@artemshumeiko
@artemshumeiko 10 ай бұрын
спасибо @@coryphoenixxx8238
@7IdE
@7IdE 9 ай бұрын
Такое впечатление, что тут пропущен видос. Про scalars не было вообще ничего, а тут "напомню". И именно объяснение этой штуки меня очень интересовало. Да и Core VS ORM тоже не было...
@АртурЛюбимов-й1о
@АртурЛюбимов-й1о Ай бұрын
ООО! Помню тебя из курсов "поколение python". Ты себе не изменяешь, всегда авторов поправляешь)
@7IdE
@7IdE Ай бұрын
@@АртурЛюбимов-й1о, я капец как прифигел от твоего коммента. :D
@hunterxvov4ik
@hunterxvov4ik 6 ай бұрын
видно, что постарался над курсом. Помню, летом 2023 смотрел твои видео по фастапи и они мне сильно не понравились. В этом же курсе чувствуется опыт и работа. Однозначно лайк
@dima5116
@dima5116 5 ай бұрын
Согласен, в том курсе прям постоянно код менялся, четкой структуры как будто не было, здесь эти ошибки исправлены, а может быть я сам уже "дорос". Тоже с удовольствием прохожу этот курс
@АлексейКузенков-г4и
@АлексейКузенков-г4и 11 ай бұрын
Супер! Очень интересно и с нетерпением ждем новых!
@АнастасияДолгополова-ш9д
@АнастасияДолгополова-ш9д 10 ай бұрын
Спасибо за урок👍. Отлично объясняешь 🤩. С нетерпением жду тему relationship💪
@artemshumeiko
@artemshumeiko 10 ай бұрын
Спасибо) на следующей неделе уже выйдет первое видео по relationships
@emerald2281
@emerald2281 11 ай бұрын
Отличные видео, продолжай в том же духе!
@vladimirfesenko12345
@vladimirfesenko12345 2 ай бұрын
Здравствуйте, Артем. Получается, что если использовать query builder, а не сырой SQL, то мы по умолчанию защищены от SQL инъекций? Спасибо большое за видео. Я начинающий и для таких как я ваши видео очень полезны.
@artemshumeiko
@artemshumeiko 2 ай бұрын
да, верно
@SergeyBakaevRettley
@SergeyBakaevRettley 11 ай бұрын
на 9:08 можно в where указывать TableName.column, а не TableName.c.column, по крайней мере в sqlalchemy version >2.0. Мне такой синтаксис больше нравится, так как работает автодополнение и есть подсветка
@artemshumeiko
@artemshumeiko 11 ай бұрын
Если имеем дело с таблицами Table(...), то обязаны указывать .c. Если задаем модель через класс, то да, .c не нужен и есть подсказки в IDE
@asg5511
@asg5511 11 ай бұрын
Очень доступное объяснение. Талант к преподаванию!
@Александр-ъ3о1щ
@Александр-ъ3о1щ 11 ай бұрын
Спасибо, всё подробно обьяснил ! ВОПРОС - а не сброится ли наш primary_key если мы применим метод refresh перед коммитом в функции обновления воркера? и получится так что апдейт будет искать ключи которых не существует..
@vasiliy2396
@vasiliy2396 7 ай бұрын
Курс очень нравится, но я не совсем понимаю, если мы используем ORM, то работаем через sessionmaker, а если с Core, то через engine? Или это просто совпадение? Ведь работает и так, и так. В чем отличие и как понять, что использовать? Заранее спасибо)
@artemshumeiko
@artemshumeiko 7 ай бұрын
в ORM обязательно использовать сессию, именно она собирает в себя все изменения и при коммите разом отправляет их в базу данных. engine просто исполняет запросы и не способен держать контекст я говорю про session.add(), session.add_all() и, например, user = session.get(User, 1) user.name = "Ivan" session.commit()
@Qustoos
@Qustoos 9 ай бұрын
Выборка через where всегда требует .c. указывать? В документации не нашел конкретно про "c" Кажется что "c" необходим для таблицы созданных через Table, а таблицы через Classname(Base) позволяет к полю id обращаться как к атрибуту модели.
@artemshumeiko
@artemshumeiko 9 ай бұрын
.с нужен только для table, для cte и subquery вроде я упоминаю это в курсе
@Biongar
@Biongar 11 ай бұрын
Сделай пожалуйста следующее: Есть допустим таблица User, у него email и username, оба unique=True, вопрос, при добавлении User, если вылетел exception UniqueConstraintFailed, как нам в алхимии понять какое именно поле не прошло проверку на уникальность
@emerald2281
@emerald2281 11 ай бұрын
Мб проверь есть ли юзер по емейлу потом по юзернейму
@Biongar
@Biongar 11 ай бұрын
@@emerald2281 каждый раз 2 лишних запроса писать?
@nateriver8261
@nateriver8261 11 ай бұрын
А как в алхимии решается проблема N+1?
@artemshumeiko
@artemshumeiko 11 ай бұрын
Покажу в видео о relationship. Они будут под номерами 9,10
@awesomeex5821
@awesomeex5821 3 ай бұрын
подача конечно хорошая, но дико раздражает вот эти "я тут немного изменил код" или вообще начинаешь говорить про темы которые еще не проходили так как будто мы уже это прошли, уже второй курс смотрю у тебя и дико тригерит что постоянно меняется код вне ролика, приходится потом сидеть разбираться почему что то не работает и тд
@BersGriffith
@BersGriffith 3 ай бұрын
я бы для ORM подхода добавил with_for_update(): foo = session.query(Foo).filter(Foo.id==1234).with_for_update().one(). Почему? Чтобы на момент обновления строки в таблице она была заблокирована и конкурентная транзакция не смогла ее изменить еще как то.
@Habimbo
@Habimbo 2 ай бұрын
Артем , привет , у тебя остался еще курс на степике по FastApi?
@scr1pt651
@scr1pt651 8 ай бұрын
Артем, привет! Большое спасибо за курс! Подскажи, пожалуйста, как определить, что лучше для проекта выбрать: SQLAlchemy Core или SQLAlchemy ORM? Что является более ограниченным по возможностям и может у тебя есть какие-нибудь ресурсы, где можно почитать про выбор кора или орм? Заранее спасибо!
@xacho86
@xacho86 11 ай бұрын
Хочу обратить внимание, что согласно документации one_or_none() может возбудить ошибку при возврате более одной строки - MultipleResultError (с названием могу путать);
@natpagle2628
@natpagle2628 10 ай бұрын
привет! я новичок в sqlalchemy да и вообще в питоне, столкнулся с проблемой циклических импортов когда попытался связать 2 модели, есть модель User, есть модель UserRole, в User есть поле roles: Mapped[List[UserRole]], а в UserRole поле user: Mapped[User]. Ну и импортировав необходимые классы получил ошибку. Как вообще грамотно с таким бороться?
@artemshumeiko
@artemshumeiko 10 ай бұрын
достаточно название модели заключить в кавычки: Mapped[List["UserRole"]] и убрать явные импорты -- алхимия дальше разберется :)
@artemshumeiko
@artemshumeiko 10 ай бұрын
ровно так же кстати работают импорты моделей в Pydantic, если встретитесь
SQLAlchemy: Basic SELECT queries #7
13:22
Артём Шумейко
Рет қаралды 11 М.
CI/CD - Простым языком на понятном примере
15:29
Артём Шумейко
Рет қаралды 31 М.
when you have plan B 😂
00:11
Andrey Grechka
Рет қаралды 66 МЛН
SQLAlchemy: How to use Session and ORM
13:37
Артём Шумейко
Рет қаралды 22 М.
SQLAlchemy ORM crash course - Learn SQLAlchemy in 1 hour
1:00:35
Demos Petsas
Рет қаралды 21 М.
SQLAlchemy: How to JOIN tables | CTE | Subqueries | Window functions #8
18:56
Артём Шумейко
Рет қаралды 11 М.
SQLAlchemy: Database connection, raw SQL queries with engine #2
17:02
Артём Шумейко
Рет қаралды 39 М.