【问题标题】:Get total record count for SqlAlchemy query result, which uses pagination(limit, offset)获取使用分页(限制,偏移)的SqlAlchemy查询结果的总记录数
【发布时间】:2021-01-29 21:45:53
【问题描述】:

我正在使用sqlalchemy 查询与limitoffset. 现在我需要获取查询结果的total count

现在我分别使用计数查询和限制查询并获取结果。有没有什么有效的方法可以在单个 sqlalchemy 查询中获取计数。

这是我目前使用的示例,

# getting total count
docs_count = DB_SESSION.query(Documents).count()

# using limit and offset
docs_list = DB_SESSION.query(Documents).limit(10).offset(0)

现在可以将它组合成一个查询,或者有任何有效的方法来做到这一点。谢谢大家。

【问题讨论】:

    标签: python mysql sqlalchemy


    【解决方案1】:

    我遇到了同样的问题。 我所做的是通过'over'子句将计数操作添加到查询中,如下所示:

    from sqlalchemy.sql import func
    
    docs_query = DB_SESSION.query(Documents,func.count(Documents.id).over().label("total"))
    docs_query = docs_query.limit(10).offset(0)
    docs_results = docs_query.all()
    if len(docs_results) > 0 :
        docs_list= docs_results[0]
        docs_count= docs_results[0][1]
    

    SQLAlchemy 信息:

    我不知道这是否是最好的方法,但它比您所做的要快一些。希望对您或其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2017-06-15
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多