torin2k
Июнь 17, 2010 14:04:39
Прошу помощи.
Допустим есть:
tbl = Table('Table', metadata,
Column('id', Numeric, primary_key=True),
Column('name', String(4000)))
class Obj(object):
pass
orm.mapper(Obj, tbl)
q = Session.query(Obj)
Как можно реализовать фильтрацию записей допустим с 11 по 20.
(Нужно для реализации пагинатора)
Знаю, что в oracle есть служебное слово “rownum”, но очень не хочется писать нативный SQL в выборках и привязыватся к конкретной СУБД.
Пока решением вижу только перебор rows в цикле.
ziro
Июнь 17, 2010 14:11:17
Сфмый простой вариант q = Session.query(Obj) или его аналог q = Session.query(Obj).slice(11, 20)
Более подробно -
http://www.sqlalchemy.org/docs/reference/orm/query.html#sqlalchemy.orm.query.Query.slice
torin2k
Июнь 17, 2010 14:59:04
ziro
Сфмый простой вариант q = Session.query(Obj) или его аналог q = Session.query(Obj).slice(11, 20)
Более подробно - http://www.sqlalchemy.org/docs/reference/orm/query.html#sqlalchemy.orm.query.Query.slice
Спасибо, то что надо!
И с сортировкой корректно работает.
bw
Июнь 17, 2010 16:06:31
Для паджинации логичнее выглядят .offset(11) и .limit(10).
..bw
torin2k
Июнь 17, 2010 16:56:51
bw
Для паджинации логичнее выглядят .offset(11) и .limit(10).
..bw
про offset не знал.
ЗЫ: sqlalchemy хорошая штука, но документация ужасная.
PooH
Июнь 17, 2010 20:32:11
torin2k
ЗЫ: sqlalchemy хорошая штука, но документация ужасная.
Ой! Вей! У алхимии отличная документация, вы плохой еще не видели ;)