【问题标题】:Error when trying to Increment a db.IntegerProperty: TypeError: can only concatenate tuple (not "int") to tuple尝试增加 db.IntegerProperty 时出错:TypeError: can only concatenate tuple (not "int") to tuple
【发布时间】:2012-05-05 06:15:55
【问题描述】:

我正在使用 Google App Engine,我只是想将一个值增加 1(player.number_requests - 请参见下面的代码)。但是,当我这样做时,我收到以下错误:“TypeError: can only concatenate tuple (not "int") to tuple”。知道为什么会这样吗?

class Player(db.Model):
    name = db.StringProperty(required=True, multiline=False),
    number_requests = db.IntegerProperty(required=True, default=0),
    last_seen = db.DateTimeProperty(required=True, auto_now_add=True),
    created_date = db.DateTimeProperty(required=True, auto_now_add=True)

class PlayersHandler(webapp2.RequestHandler):
    def get(self):
        result = Player.get_by_key_name(self.request.get('name'))
        if result:
            result.last_seen = datetime.now()
            result.number_requests += 1 # FAILS HERE
            result.put()
            self.response.out.write('{0}, {1}'.format(result.last_seen, result.number_requests))

追踪

Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1536, in __call__
    rv = self.handle_exception(request, response, e)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1530, in __call__
    rv = self.router.dispatch(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "main.py", line 39, in get
    result.number_requests += 1
TypeError: can only concatenate tuple (not "int") to tuple

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore


    【解决方案1】:

    模型中的属性末尾有一个逗号 (,)。他们不应该。在python写法

    foo = bar,
    

    和你放的一样

    foo = (bar,)
    

    创建一个元组。

    【讨论】:

    • 哇,我不敢相信我添加了逗号。非常感谢!
    猜你喜欢
    • 2014-07-31
    • 2019-05-26
    • 1970-01-01
    • 2020-11-21
    • 2022-11-01
    • 2021-12-18
    • 2021-02-02
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多