在将 Python 和 SQLAlchemy 与 PostgreSQL 数据库一起使用的原型应用程序中,我有以下架构(摘录):
class Guest(Base):
__tablename__ = 'guest'
id = Column(Integer, primary_key=True)
name = Column(String(50))
surname = Column(String(50))
email = Column(String(255))
[..]
deleted = Column(Date, default=None)
Run Code Online (Sandbox Code Playgroud)
我想使用 SQLAlchemy 构建一个查询来检索来宾列表,以显示在后台。
为了实现分页,我将使用 LIMIT 和 OFFSET,以及 COUNT(*) OVER() 来获取执行查询时的记录总数(而不是使用不同的查询)。
SQL 查询的示例可能是:
SELECT id, name, surname, email,
COUNT(*) OVER() AS total
FROM guest
WHERE (deleted IS NULL)
ORDER BY id ASC
LIMIT 50
OFFSET 0
Run Code Online (Sandbox Code Playgroud)
如果我要使用 SQLAlchemy 构建查询,我可以执行以下操作:
query = session.query(Guest)
query = query.filter(Login.deleted == None)
query = query.order_by(Guest.id.asc())
query …Run Code Online (Sandbox Code Playgroud)