Вы никогда не используете fetch () для фактического выполнения GqlQuery, который вы создаете в строке 80.
Попробуйте это:
country_wide_data = db.GqlQuery("SELECT * FROM CountryWideData WHERE country = :1 AND questionNo = :2", user_country, question_number).fetch()
Кстати, вы захотите сделать это увеличение внутри транзакции; в противном случае вы получите условие гонки, если более чем один запрос может выполнить этот код, и количество будет неточным. Документация по сделкам находится здесь: http://code.google.com/appengine/docs/python/datastore/transactions.html
Как правило, вы захотите взять код, который создает или обновляет эти сущности, и помещать их в функции, например:
def increment_existing_data(key, answered):
cwd_to_incr = db.get(key)
if answered == 1:
cwd_to_incr.optionOne += 1
elif answered == 2:
cwd_to_incr.optionTwo += 1
cwd_to_incr.put()
def create_new_data(answered, user_country, question_number):
new_data = CountryWideData(country=user_country, questionNo=question_number)
if answered == 1:
new_data.optionOne = 1
new_data.optionTwo = 0
elif answered == 2:
new_data.optionOne = 0
new_data.optionTwo = 1
new_data.put()
Затем вы можете вызывать эти функции, используя метод db.run_in_transacation , например:
country_wide_data = db.GqlQuery("SELECT * FROM CountryWideData WHERE country = :1 AND questionNo = :2", user_country, question_number).get()
if country_wide_data is not None:
db.run_in_transaction(increment_existing_data, country_wide_data.key(), answered_option)
else:
db.run_in_transaction(create_new_data, answered_option, user_country, question_number)