Форум сайта python.su
balooSQLAlchemy устанавливает LIMIT и OFFSET для запроса.
Единственное, что мне нравится - так это как SQLAlchemy взаимодействует с Paginator'ом. Ведь для того, чтобы паджинатор посчитал страницы и пр., по-любому требуется запросить весь запрос. Проще говоря, прменение rows так или иначе запрашивает ВСЕ, а потом из него берет свое. Получается долго. А алхимия делает как-то быстро и элегантно, даже запрос в 60 тысяч срок делит за секунду. Пытался отследить как, но пока ума не хватило.
Офлайн
PooH
SELECT COUNT(*) …
потом
SELECT FIRST x SKIP y …
odsfirst-skip в FireBird заменено rows to, я пытался это и использовать мимо SQLAlchemy. Вот он на сервере и запрашивает все, что допускается в клаусе WHERE, а потом из него и выбирает заданные строки. Лимит-оффсет, если не ошибаюсь, это из MySQL? Сегодня вечером посижу, покопаю еще, накопаю - отчитаюсь.
SQLAlchemy устанавливает LIMIT и OFFSET для запроса
Офлайн
balooMySQL, PostgreSQL (2 наиболее часто используемые СУБД), SQLite и ещё некторые. В стандартах такие вещи только недавно стали появляться: ROW_NUMBER() OVER в SQL2003 и OFFSET … ROWS FETCH FIRST … ROWS ONLY в SQL2008. До этого был только FETCH RELATIVE для курсоров (никогда не видел его использования в жизни, но в DB API есть методы делающие то же самое).
Лимит-оффсет, если не ошибаюсь, это из MySQL?
Офлайн
balooМожет быть, давно с FireBird не работал. Дык, поставьте в create_engine echo=True и посмотрите какие запросы он генерит.
first-skip в FireBird заменено rows to, я пытался это и использовать мимо SQLAlchemy. Вот он на сервере и запрашивает все, что допускается в клаусе WHERE, а потом из него и выбирает заданные строки.
Офлайн