РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
274 of 711 menu

Метод limit класса Query

Метод limit класса Query ограничивает количество строк, которые возвращает запрос. Первым параметром метод принимает целое число - максимальное количество записей в результате. Метод возвращает новый объект Query, который можно дальше модифицировать или выполнить.

Синтаксис

query.limit(limit)

Пример

Давайте создадим модель и получим только первые две статьи из базы данных:

from sqlalchemy import create_engine, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1'), Article(title='article 2'), Article(title='article 3'), Article(title='article 4'), ]) session.commit() res = session.query(Article).limit(2).all() for article in res: print(article.title)

Результат выполнения кода:

"article 1" "article 2"

Пример

Давайте объединим метод limit с методом offset, чтобы пропустить первую запись и получить следующие две:

from sqlalchemy import create_engine, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1'), Article(title='article 2'), Article(title='article 3'), Article(title='article 4'), ]) session.commit() res = session.query(Article).offset(1).limit(2).all() for article in res: print(article.title)

Результат выполнения кода:

"article 2" "article 3"

Пример

Давайте посмотрим, какой SQL-запрос генерирует метод limit:

from sqlalchemy import create_engine, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: query = session.query(Article).limit(3) print(query)

Итоговый SQL запрос:

SELECT articles.id AS articles_id, articles.title AS articles_title FROM articles LIMIT ? OFFSET ?

Смотрите также

  • класс Query,
    который представляет ORM-запрос
  • метод offset,
    который пропускает заданное число строк
  • метод order_by,
    который задает сортировку результата
  • метод all,
    который возвращает все строки результата
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить