Как я могу получить ограниченное количество строк из mysql с помощью flask SQLAlchemy?

#python #flask #sqlalchemy #flask-sqlalchemy

#python #flask #sqlalchemy #flask-sqlalchemy

Вопрос:

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

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

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

Ответ №1:

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

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