相关疑难解决方法(0)

在当前查询中使用 COUNT(*) OVER() 和 SQLAlchemy over PostgreSQL

在将 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)

python postgresql sqlalchemy

7
推荐指数
1
解决办法
2219
查看次数

在 SQLAlchemy 中使用 OVER 窗口函数

我如何使用 SQLAlchemy 获得有限结果的总数。我目前正在使用 Postgres,所以我知道我可以使用窗口函数。我基本上想知道如何在 SQLAlchemy 中编写以下内容:

SELECT foo
  ,count(*) OVER() AS full_count
FROM   bar
ORDER  BY <some col>
LIMIT  <pagesize>
OFFSET <offset>
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy

6
推荐指数
1
解决办法
5084
查看次数

标签 统计

postgresql ×2

python ×2

sqlalchemy ×2