Питон Google App Engine, GQL, выберите только один столбец из хранилища данных - PullRequest
2 голосов
/ 27 августа 2011

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

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

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

books = db.GqlQuery ('ВЫБРАТЬ заголовок из книг')

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

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

Ответы [ 2 ]

3 голосов
/ 27 августа 2011

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

2 голосов
/ 27 августа 2011

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

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

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

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

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

...