0Pricing
Python Academy · Урок

Запросы через Session

Читайте и фильтруйте данные

«Запросы через Session» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Сессия

ORM выполняет всю свою работу через сессию. Она управляет единицей работы: отслеживает новые, изменённые и удалённые объекты и взаимодействует с базой данных.

from sqlalchemy import create_engine
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
    print('Session open:', session)

Добавление объектов

session.add() подготавливает новый объект. В базу данных ничего не попадёт, пока Вы не вызовете commit().

from sqlalchemy.orm import Session
# session.add(user) stages it
# session.commit() writes it
print('add stages, commit saves')

Фиксация изменений

session.commit() отправляет ожидающие изменения в базу данных и фиксирует транзакцию, делая их постоянными.

# with Session(engine) as session:
#     session.add(User(name='Alice'))
#     session.commit()
print('commit persists the work')

Запросы с помощью select()

Современный SQLAlchemy считывает данные с помощью select(), выполняемого через сессию. scalars() возвращает экземпляры моделей.

from sqlalchemy import select
# stmt = select(User)
# users = session.scalars(stmt).all()
print('select(User) then scalars().all()')

Получение всех строк

session.scalars(select(User)).all() возвращает список всех объектов User в таблице.

from sqlalchemy import select
# all_users = session.scalars(select(User)).all()
# for u in all_users:
#     print(u.name)
print('all() returns a list of objects')

Фильтрация с помощью where()

Добавьте условие where() для фильтрации. Сравните сопоставленный столбец с помощью обычного оператора Python.

from sqlalchemy import select
# stmt = select(User).where(User.age > 28)
# adults = session.scalars(stmt).all()
print('where(User.age > 28) filters rows')

Получение одного объекта

session.scalars(stmt).first() возвращает первое совпадение или None. one() ожидает ровно одну строку и в противном случае выдаёт ошибку.

from sqlalchemy import select
# stmt = select(User).where(User.name == 'Alice')
# user = session.scalars(stmt).first()
print('first() = first match or None')

Поиск по первичному ключу

session.get(User, 1) — самый быстрый способ получить один объект по его первичному ключу.

# user = session.get(User, 1)
# print(user.name)
print('session.get(Model, pk) fetches by id')

Сортировка результатов

Добавьте order_by() в цепочку вызовов для сортировки. Используйте .desc() для столбца, чтобы отсортировать данные по убыванию.

from sqlalchemy import select
# stmt = select(User).order_by(User.age.desc())
# sorted_users = session.scalars(stmt).all()
print('order_by(User.age.desc()) sorts results')

Изменение объекта

Измените атрибут загруженного объекта, затем вызовите commit(). Сессия обнаружит изменение и выполнит UPDATE.

# user = session.get(User, 1)
# user.name = 'Alicia'
# session.commit()  # auto UPDATE
print('Edit attribute, then commit')

Удаление объекта

session.delete(obj) помечает объект для удаления. DELETE выполняется при следующей фиксации.

# user = session.get(User, 1)
# session.delete(user)
# session.commit()  # row removed
print('delete(obj) then commit removes the row')

Проверка

Проверьте свои знания о сессиях.

Повторение

Вы научились считывать и изменять данные через сессию.

  • Session отслеживает Вашу единицу работы
  • add() подготавливает изменения, а commit() сохраняет их
  • select() + scalars() считывают объекты, а where() выполняет фильтрацию
  • session.get() получает объект по первичному ключу; изменения и delete() применяются при фиксации

Часто задаваемые вопросы

Урок «Запросы через Session» бесплатный?

Да — полный текст урока «Запросы через Session» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Запросы через Session»?

Читайте и фильтруйте данные Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Запросы через Session»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. SQLAlchemy Core и ORM
  2. Определение моделей
  3. Запросы через Session
  4. Связи и объединения
← Назад к Python Academy