Back to snippets
sqlakeyset_keyset_pagination_with_sqlalchemy_query.py
pythonDemonstrates how to perform keyset-based pagination using a SQLAlchemy query
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")