Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 17, 2010 14:04:39

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy: Фильтрация query по номерам записей

Прошу помощи.

Допустим есть:

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 в цикле.



Офлайн

#2 Июнь 17, 2010 14:11:17

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

SQLAlchemy: Фильтрация query по номерам записей

Сфмый простой вариант 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



Офлайн

#3 Июнь 17, 2010 14:59:04

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy: Фильтрация query по номерам записей

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
Спасибо, то что надо!

И с сортировкой корректно работает.



Офлайн

#4 Июнь 17, 2010 16:06:31

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

SQLAlchemy: Фильтрация query по номерам записей

Для паджинации логичнее выглядят .offset(11) и .limit(10).

..bw



Отредактировано (Июнь 17, 2010 16:09:08)

Офлайн

#5 Июнь 17, 2010 16:56:51

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy: Фильтрация query по номерам записей

bw
Для паджинации логичнее выглядят .offset(11) и .limit(10).

..bw
про offset не знал.

ЗЫ: sqlalchemy хорошая штука, но документация ужасная.



Офлайн

#6 Июнь 17, 2010 20:32:11

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

SQLAlchemy: Фильтрация query по номерам записей

torin2k
ЗЫ: sqlalchemy хорошая штука, но документация ужасная.
Ой! Вей! У алхимии отличная документация, вы плохой еще не видели ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version