class Config(db.Model):
Latest = db.IntegerProperty()
class New(webapp.RequestHandler):
def get(self):
config = Config()
Last = Config.Latest
t = Last + 1
возвращает
t = LastUUID + ADDNUM
TypeError: unsupported operand type(s) for +: 'IntegerProperty' and 'Int'
Что я пытаюсь сделать, это получить int из хранилища данных и приложения 1. Затем переназначьте int в хранилище данных. Я не знаю, почему он бросает эти ошибки. Я даже попробовал t = int(Last +1)
.
ОБНОВЛЕНИЕ: Это то, что мне нужно, и решить мою проблему. http://code.google.com/appengine/articles/sharding_counters.html
Необходимые изменения - это больше, чем настройка одной строки.
Вам нужна какая-то функция инициализации, которая создаст экземпляр Config()
, присвойте Latest
начальное значение (например, 1 или 0) и сохраните его в хранилище данных.
Затем вашему RequestHandler необходимо выполнить запрос, чтобы получить соответствующий экземпляр Config
. Наконец, обновите Latest
и снова сохраните экземпляр в хранилище данных.
Это не имеет ничего общего с Google App Engine или Django. В следующем коде:
class X(object):
@property
def y(self):
return 5
x = X()
print X.y + 5
... вы получаете ту же ошибку. X.y
относится к несвязаному свойству объекта класса. X.y
относится к связанному свойству, и действительно в приведенном выше примере print x.y + 5
выводится "10".
Измените строку на Last = config.Latest
, и она должна работать. И я настоятельно рекомендую вам принять рекомендации в PEP 8, в частности в разделе "Prescriptive: Соглашения об именах". Вообще говоря, в классах Python следует использовать CapWords
, тогда как функции и переменные должны использовать lowercase_with_underscores
.
http://code.google.com/appengine/articles/sharding_counters.html
Это базовый conter, который может обновляться несколько раз в секунду. Отлично работает
Синтаксис, который вы ищете, это
t = int(Last) +1
Однако я не уверен, что вы хотите сделать. Я не знаю джанго или что-то вроде этого, так трудно сказать. Но в python типы должны быть совместимы для вас, чтобы добавить их.
0.1 + 2
добавляет просто отлично.
long(Last + 1)
?