当分页对象的结果为零时,我们强制 ?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/