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,将app 1从中获取。然后在数据存储区中重新分配int。我不知道为什么会抛出这些错误。我甚至试过t = int(Last +1)
。
更新:这是我需要的并解决了我的问题。 http://code.google.com/appengine/articles/sharding_counters.html
答案 0 :(得分:3)
您需要的更改不仅仅是调整一行。
您需要某种初始化函数,该函数将创建Config()
实例,为Latest
分配初始值(如1或0)并将其存储在数据存储区中。
然后您的RequestHandler需要execute a query来检索相关的Config
实例。最后,更新Latest
,然后再次将实例保存到数据存储区中。
答案 1 :(得分:1)
这与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:Naming Conventions”中。一般来说,在Python类中应使用CapWords
,而函数和变量应使用lowercase_with_underscores
。
答案 2 :(得分:0)
您正在寻找的语法是
t = int(Last) +1
然而,我不确定你想做什么。我不知道django或者这是什么框架所以很难说。但是在python中,类型必须兼容才能添加它们。
答案 3 :(得分:0)
http://code.google.com/appengine/articles/sharding_counters.html
这是一个可以每秒更新多次的基本控制器。完美无缺