Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2012 10:31:53

DevPy
Зарегистрирован: 2012-09-21
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в SQLAlchemy сделать выборку только по заданным полям

На сайте использую Flask и SQLAlchemy для работы с БД.
Для страницы “списка новостей” использую запрос:

News.query.order_by('date DESC').paginate(page, per_page=20)

Все нормально работает. Но такой запрос тянет из БД все данные находящиеся в записи каждой новости - это сама статья, источники на новость, автор и т.д.
Хотя для страницы “списка новостей” достаточно всего лишь заголовка, изображения, id и даты.

Как можно дополнить/изменить запрос так, чтобы запрос содержал только список требуемых данных (id, title, date, image)?

Облазив маны и примеры нашел только единственный способ:
engine.execute('SELECT id, title, date, image ORDER date DESC FROM news').all()
но данный способ использования чистых SQL запросов не кажется мне совсем правильным.

Отредактировано DevPy (Окт. 1, 2012 10:32:37)

Офлайн

#2 Окт. 1, 2012 11:29:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как в SQLAlchemy сделать выборку только по заданным полям

Попробуй как-то так

News.query.select('id','date','image').order_by('date DESC').paginate(page, per_page=20)



Офлайн

#3 Окт. 1, 2012 14:21:40

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

Как в SQLAlchemy сделать выборку только по заданным полям

Офлайн

#4 Окт. 16, 2012 06:20:20

DevPy
Зарегистрирован: 2012-09-21
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в SQLAlchemy сделать выборку только по заданным полям

FishHook
.select('id','date','image') и ему подобные не подошли

ziro
в документации не было информации про то как это сделать в Flask.

Решение нашел. Нужно использовать: .with_entities(News.id, News.date, News.image)
т.е. запрос получится такой:

News.query.with_entities(News.id, News.title, News.date, News.image).order_by('date DESC').paginate(page, per_page=20)
все остальное естественно загружаться не будет

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version