Как я могу получить ограниченное количество строк из MySQL, используя колбу SQLAlchemy? - PullRequest
1 голос
/ 12 апреля 2019

Я не могу получить ограниченное количество строк. Я всегда получаю сообщение об ошибке, когда пытаюсь это сделать.

Обратите внимание, что я также пытаюсь разбить на страницы ограниченное количество извлекаемых строк.

Программа отлично работает без использования лимита. Он может выбирать случайным образом и разбивать на страницы, но выдает ошибку, когда я пытаюсь использовать .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 (). В противном случае вызовите order_by () перед применением limit () или offset ().

1 Ответ

0 голосов
/ 12 апреля 2019

Вы не можете позвонить order_by() после limit() в том же запросе. SQLAlchemy не позволяет вам сделать это.
Попробуйте использовать from_self() перед вызовом paginate().

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