首页 > 解决方案 > 如何使用flask SQLAlchemy从mysql中获取有限数量的行?

问题描述

我无法获取有限数量的行。每当我尝试它时,我总是会遇到错误。

请注意,我也在尝试对获取的有限行数进行分页。

该程序在不使用限制的情况下运行良好。它能够随机获取并分页,但是当我尝试使用 .limit() 时会出错

def question(page=1):
    # questions = Question.query.paginate(page, per_page=1)
    quess = Question.query.order_by(func.rand())
    quest = quess.limit(2)
    questions = quest.paginate(page, per_page=1)

这是我不断收到的错误...

sqlalchemy.exc.InvalidRequestError

InvalidRequestError: Query.order_by() 在已经应用了 LIMIT 或 OFFSET 的查询上被调用。要修改查询的行限制结果,请先调用 from_self()。否则,在应用 limit() 或 offset() 之前调用 order_by()。

标签: pythonflasksqlalchemyflask-sqlalchemy

解决方案


您不能在同一个查询中调用order_by()after 。limit()SQLAlchemy 不允许你这样做。在调用之前
尝试使用。from_self()paginate()

Question.query.order_by(func.rand())
   .limit(2).from_self()
   .paginate(page, per_page=1)

推荐阅读