У меня есть python3 + flask + sqlalchemy + postgres
У меня есть несколько пользовательских запросов, чьи данные я обслуживаю, разбит на страницы как json.
from sqlalchemy.sql import text
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
db.engine.execute('SELECT * FROM MY_TABLE LIMIT :limit OFFSET :offset',
limit=limit, offset=offset)
Я могу передать целочисленные значения для limit
и values
, пока все хорошо.
Однако иногда мне нужны полные данные вместо разбитых на страницы данных.
Эквивалентный запрос для этого будет
SELECT * FROM MY_TABLE LIMIT ALL OFFSET 0
Итак, я попытался передать limit='ALL'
и offset=0
, и SQLAlchemy жалуется
sqlalchemy.exc.DataError: (psycopg2.DataError) invalid input syntax for integer: "ALL"
LINE 1: ...T_LABEL_ID IN (2, 5) ORDER BY TIMESTAMP_RAW LIMIT 'ALL' OFFS...
ALL
является зарезервированным ключевым словом и не ожидается, что оно будет передано в виде строки
Мой вопрос: есть ли лучший способ сделать это, кроме условного добавления LIMIT :limit OFFSET :offset
к моему запросу только при необходимости?