GAE ndb put()参数错误

时间:2014-12-11 13:20:13

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

我正在尝试将对象保存到GAE的数据存储区。这样做时我得到错误:

Traceback (most recent call last):
  File "/Users/Soderstrom/google-cloud-sdk/.install/.backup/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 267, in Handle
    result = handler(dict(self._environ), self._StartResponse)
  File "/Users/Soderstrom/PycharmProjects/MyApp/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/Soderstrom/PycharmProjects/MyApp/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/Users/Soderstrom/PycharmProjects/MyApp/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/Soderstrom/PycharmProjects/MyApp/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/Soderstrom/PycharmProjects/MyApp/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/Soderstrom/PycharmProjects/MyApp/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/Soderstrom/PycharmProjects/MyApp/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/Soderstrom/PycharmProjects/MyApp/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/Soderstrom/PycharmProjects/MyApp/main.py", line 559, in backends
    db.save(v.getFastigheter(), '1')
TypeError: put() takes exactly 1 argument (2 given)

这与传递给实体创建者的实际参数数量无关。

db.save(v.getSomeData(), '1')     <- main.py, line 559
db.load('1')

这是db模块:

class ndbc(ndb.Model):
    val = ndb.PickleProperty(compressed=True, indexed=False)
    key_name = ndb.PickleProperty(indexed=True)

    @classmethod
    def set(cls, key_t, val_t):
        entity = cls(val=val, key_name=key)

        entity.put()
        return val_t


    def save(obj, name):
    return ndbc.set(name, obj)

1 个答案:

答案 0 :(得分:1)

你的意思是entity = cls(val=val_t, key_name=key_t)?此外,key_name是一个旧的db属性。对于ndb,您应该使用id

https://docs.google.com/document/d/1AefylbadN456_Z7BZOpZEXDq8cR8LYu7QgI7bt5V0Iw/mobilebasic

不确定id可以是PickleProperty。有兴趣看看这是否有效。