Удивительно, но после множества запросов без проблем. Я столкнулся с первой странной проблемой GQL.
Ниже приведены свойства модели под названием Feedback:
content date title type votes_count written_by
и следующие настройки настроены в index.yaml:
- kind: Feedback
properties:
- name: type
- name: date
direction: desc
Когда я запросил все данные обратной связи, отсортированные по дате, он вернул мне все результаты:
query = GqlQuery("SELECT __key__ FROM Feedback ORDER BY date DESC")
Свойство type хранится в type = db.IntegerProperty (по умолчанию = 1, required = False, indexed = True), и есть 8 строк данных Feedback с типом целого числа 1.
Однако когда я спросил:
query = GqlQuery("SELECT __key__ FROM Feedback WHERE type = :1 ORDER BY date DESC", type)
Он возвращал мне пустые результаты. Что пошло не так?
Обновить
def get_keys_by_feedback_type(type_type):
if type_type == FeedbackCode.ALL:
query = GqlQuery("SELECT __key__ FROM Feedback ORDER BY date DESC")
else:
query = GqlQuery("SELECT __key__ FROM Feedback WHERE type = :1 ORDER BY date DESC", type_type)
return query
results = Feedback.get_keys_by_feedback_type(int(feedback_type_filter))
for feedback_key in results:
# iterate the query results
Индекс обслуживает:
Feedback
type ▲ , date ▼ Serving
type
в качестве имени переменной; это функция, предоставляемая Python, и хотя ничто не мешает вам изменить ее на что-то другое (Python очень динамичен), вам действительно следует избегать этого любой ценой. - person Adam Crossland   schedule 17.05.20121
вместо переменной? - person Adam Crossland   schedule 17.05.2012query = GqlQuery("SELECT __key__ FROM Feedback WHERE type = :1 ORDER BY date DESC", int(type_type))
еслиtype_type
не целое число, вы не получите ожидаемых результатов. - person Adam Crossland   schedule 17.05.2012