在 SQLAlchemy 中使用分页查询
分页查询是在大规模数据集中常用的一种技术,它可以将大的数据集分割成小的部分,以便更快地查找和处理数据。在 SQLAlchemy 中,可以使用 limit()
和 offset()
来实现分页查询。
假设我们有一个名为 Article
的模型类,它包含了文章的标题、内容和时间等属性,我们想要进行分页查询。
首先,我们需要安装 SQLAlchemy:
pip install SQLAlchemy
然后,我们需要导入需要的模块和类:
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, DateTime
接下来,我们定义模型类:
Base = declarative_base() class Article(Base): __tablename__ = 'article' id = Column(Integer, primary_key=True) title = Column(String(100)) content = Column(String(5000)) create_time = Column(DateTime)
然后,我们需要创建数据库连接和会话:
engine = create_engine('sqlite:///articles.db') Base.metadata.create_all(engine) DBSession = sessionmaker(bind=engine) session = DBSession()
接下来,我们使用 limit()
和 offset()
方法对查询进行分页操作:
PAGE_SIZE = 10 page = 1 articles = session.query(Article).order_by(Article.create_time.desc()).limit(PAGE_SIZE).offset((page - 1) * PAGE_SIZE).all() for article in articles: print(article.title)
在这个例子中,我们查询文章按照创建时间倒序排序,每页包含10篇文章。我们可以通过更改 page
变量来获取不同的页码的文章列表。
如果我们想查询特定的关键字,我们可以添加如下代码:
keyword = 'pidancode.com' articles = session.query(Article).filter(Article.title.like(f'%{keyword}%')).order_by(Article.create_time.desc()).limit(PAGE_SIZE).offset((page - 1) * PAGE_SIZE).all()
其中,like
方法表示查找标题中包含 keyword
字符串的文章。
至此,我们已经了解了如何在 SQLAlchemy 中使用分页查询。
相关文章