python - OFFSET 不能为负

标签 python postgresql flask sqlalchemy flask-sqlalchemy

当分页对象的结果为零时,我们强制 ?page=-1 那么我们将得到错误 OFFSET must not be negative

-1 将默认获取最后一页。

因此,如果您在 url 中添加该参数,如果输出为空以进行分页,则始终会导致内部错误。

示例:

 page = request.args.get('page', 1, type=int)

 pagination = company.comments.order_by(Comment.timestamp.asc()).paginate(
        page, per_page=current_app.config['COMMENTS_PER_PAGE'],
        error_out=False)

这将避免错误,但总是使用这种类型的验证来处理潜在的空分页很烦人。

 if company.comments.count() > 0:
      pagination = ...    
 else:
      pagination=None

我的问题是关于处理这个特定内部服务器错误的最佳方法。

最佳答案

这可能是您想要做的,但 sqlalchemy 不会为您评估。

我的建议是自己计算页数,然后简单地减去一个。

from sqlalchemy import func

if page < 1:
    count = session.query(func.count(Comments.id)).scalar()
    comments_per_page = current_app.config['COMMENTS_PER_PAGE']
    page = count/float(comments_per_page) -1 # gets the last page

请注意,这是未经测试的。

关于python - OFFSET 不能为负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32814217/

相关文章:

python - Django Rest框架可浏览的API过滤器后端不显示

postgresql - 为什么 psycopg2 和 pyodbc 以不同方式连接到数据库?我如何翻译连接?

javascript - 如何在使用Nodejs调用回调函数之前等待N个查询完成

python - Flask-restful API 授权。在装饰器中访问 c​​urrent_identity

python - 将 CSV 从 Azure Data Lake Storage Gen 2 读取到 Pandas Dataframe |无数据库

python - Django AttributeError : calling form. is_valid() 总是导致对象没有属性 'is_vaild'

python - 读取 CSV 文件,查找具有相同值的列并附加其他列值

postgresql - 在 PostgreSQL 中进行 DROP 操作时避免对引用表的独占访问锁

python - 导入错误 : No module named flaskext.

angularjs - 使用 angular.js 构建 flask