Google App Engine python, GQL, выберите только один столбец из хранилища данных

Я пытаюсь извлечь только один столбец из таблицы хранилища данных.

У меня есть модель Книг с идентификатором, ключом, названием, автором, ISBN и ценой.

все = db.GqlQuery('SELECT * FROM Books') дает мне все, но говорит, что мне нужен только заголовок

books = db.GqlQuery('ВЫБЕРИТЕ название ИЗ Книг')

Я пробовал все, что люди предложили, но ничего не работает

Любая помощь очень ценится Спасибо


person sidarcy    schedule 27.08.2011    source источник
comment
возможный дубликат Выбор значений из столбца с помощью GQL в приложении Двигатель   -  person Nick Johnson    schedule 29.08.2011
comment
использовать проекционный запрос./. cloud.google.com/appengine/docs/python/ndb/projectionqueries   -  person Avinash Raj    schedule 12.09.2016


Ответы (2)


Вы не можете. GQL — это не SQL, а хранилище данных — не реляционная база данных. Сущность хранится как единый сериализованный буфер протокола, и невозможно получить часть сущности; все это должно быть десериализовано.

person Wooble    schedule 27.08.2011
comment
В настоящее время я использую бесплатную версию движка приложения. Возврат всего расходует большую часть ежедневного использования моего хранилища данных, поэтому для определенных запросов я хотел бы быть более конкретным, какие-либо предложения? - person sidarcy; 07.09.2011
comment
@sidarcy: вы можете денормализовать свои модели, но использование хранилища данных IIRC измеряется вызовами API, а не размером возвращаемых объектов, поэтому возможность возвращать определенные столбцы не сильно поможет с квотой. Рассматривали ли вы возможность кэширования результатов в memcache, чтобы сократить количество обращений к API хранилища данных? - person Wooble; 07.09.2011

При проектировании хранилища данных необходимо использовать избыточность там, где этого нельзя было бы сделать в реляционной базе данных.

Так, например, ваш код может иметь объекты для «Заголовков», которые он добавляет каждый раз при добавлении книги и удаляет каждый раз при удалении книги. Затем вы можете запросить объекты Titles, чтобы получить все заголовки, не загружая все книги.

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

Я настоятельно рекомендую ознакомиться с более сложными темами по хранилищу данных здесь. .

Люди часто говорят о моментах осознания: «Как я научился перестать беспокоиться и полюбил хранилище данных». По сути, это моменты, когда люди переключаются с мышления о данных в обычной форме на распределенное / избыточное представление, где вы можете просто распылять данные в хранилище данных, и оно обработает их.

person vsekhar    schedule 27.08.2011