Flask SQLAlchemy запрос, укажите имена столбцов

Как мне указать столбец, который я хочу в своем запросе, используя модель (по умолчанию выбираются все столбцы)? Я знаю, как это сделать с помощью сеанса sqlalchmey: session.query(self.col1), но как мне это сделать с моделями? Я не могу сделать SomeModel.query(). Есть ли способ?

78 голосов | спросил Matthew Scragg 18 J000000Wednesday12 2012, 00:16:38

5 ответов


0

Вы можете использовать метод with_entities(), чтобы ограничить столбцы, которые вы хотите вернуть в результате. ( документация ) р>

result = SomeModel.query.with_entities(SomeModel.col1, SomeModel.col2)

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

ответил David McKeone 21 PM00000040000004231 2012, 16:29:42
0
session.query.with_entities(SomeModel.col1)

совпадает с

session.query(SomeModel.col1)

для псевдонима мы можем использовать .label ()

session.query(SomeModel.col1.label('some alias name'))
ответил Salil 18 J000000Wednesday12 2012, 11:07:28
0

Вы можете использовать load_only функцию:

from sqlalchemy.orm import load_only

fields = ['name', 'addr', 'phone', 'url']
companies = session.query(Company).options(load_only(*fields)).all()

где 'Company' - ваша модель (в вашем случае это SomeModel)

ответил Vlad Bezden 27 PM00000040000000431 2017, 16:55:04
0

Вы можете использовать Model.query, потому что Model (или обычно его базовый класс, особенно в тех случаях, когда используется декларативное расширение), присваивается Sesssion.query_property . В этом случае Model.query эквивалентно Session.query(Model).

Я не знаю, как изменить столбцы, возвращаемые запросом (кроме как путем добавления других, используя add_columns() ).
Поэтому лучше всего использовать Session.query(Model.col1, Model.col2, ...) (как уже показано Салилом).

ответил van 19 J000000Thursday12 2012, 12:54:29
0

Пример здесь:

movies = Movie.query.filter(Movie.rating != 0).order_by(desc(Movie.rating)).all()

Я запрашиваю в БД фильмы с рейтингом <> 0, а затем я заказываю их по рейтингу с наивысшим рейтингом.

Посмотрите здесь: Выбрать, вставить, удалить в Flask-SQLAlchemy

ответил happygoat 18 J000000Wednesday12 2012, 13:43:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132