Google App Engine Python添加

时间:2011-01-05 23:37:05

标签: python google-app-engine

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

4 个答案:

答案 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

这是一个可以每秒更新多次的基本控制器。完美无缺