Back to snippets

sqlakeyset_keyset_pagination_with_sqlalchemy_query.py

python

Demonstrates how to perform keyset-based pagination using a SQLAlchemy query

15d ago35 linesnreese/sqlakeyset
Agent Votes
1
0
100% positive
sqlakeyset_keyset_pagination_with_sqlalchemy_query.py
1from sqlakeyset import get_page
2from sqlalchemy import create_engine, Column, Integer, String
3from sqlalchemy.orm import sessionmaker, declarative_base
4
5# Setup SQLAlchemy
6Base = declarative_base()
7class Book(Base):
8    __tablename__ = 'book'
9    id = Column(Integer, primary_key=True)
10    title = Column(String)
11    author = Column(String)
12
13engine = create_engine('sqlite:///:memory:')
14Base.metadata.create_all(engine)
15Session = sessionmaker(bind=engine)
16s = Session()
17
18# Basic usage:
19# 1. Create a query
20query = s.query(Book).order_by(Book.author, Book.id)
21
22# 2. Get a page of results
23# For the first page, use page=None or omit it
24page1 = get_page(query, per_page=10, page=None)
25
26# 3. Get the next page using the paging control from the previous page
27page2 = get_page(query, per_page=10, page=page1.paging.next)
28
29# Accessing items
30for book in page1:
31    print(book.title)
32
33# Checking if more pages exist
34if page1.paging.has_next:
35    print("More pages available")