2

模型定義谷歌App Engine的數據存儲問題:獲取類型錯誤:試圖插入到數據存儲的

class SeqNumbers(ndb.Model): 
"""APNS Server -- SeqNumbers object that stores sequence number of stored messages between two devices""" 
    SeqNumberStart = ndb.IntegerProperty(required=True) 
    SeqNumberEnd = ndb.IntegerProperty(required=True) 
    Sourcein = ndb.StringProperty 
    Destin = ndb.StringProperty 

代碼添加到數據存儲時,無法設置非財產。這導致在 TypeError:無法設置非屬性Sourcein(在帖子結尾的完整錯誤)

任何幫助瞭解發生的事情將不勝感激。在GAE

data ={} 
data['SeqNumberStart']=0 
data['SeqNumberEnd']=0 
data['key']=seqKey 
data['Sourcein']='user_IOT' 
data['Destin']='user_SmartHome' 
SeqNumbers(**data).put() 

完全錯誤日誌

E 02:08:17.725 Encountered unexpected error from ProtoRPC method implementation: TypeError (Cannot set non-property Sourcein) 
    Traceback (most recent call last): 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/protorpc-1.0/protorpc/wsgi/service.py", line 181, in protorpc_service_app 
     response = method(instance, request) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/endpoints-1.0/endpoints/api_config.py", line 1332, in invoke_remote 
     return remote_method(service_instance, request) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/protorpc-1.0/protorpc/remote.py", line 414, in invoke_remote_method 
     response = method(service_instance, request) 
    File "/base/data/home/apps/s~chatimegae/v1.388953439373110592/apns_server.py", line 588, in sendMsg 
     SeqNumbers(**data).put() 
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 2942, in __init__ 
     self._set_attributes(kwds) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 2987, in _set_attributes 
     raise TypeError('Cannot set non-property %s' % name) 
    TypeError: Cannot set non-property Sourcein 
+0

從'data'字典中刪除'key'有什麼區別嗎?你在模型中沒有'key'屬性(我認爲*我看到一個提示說'命名一個屬性'key'不被允許,但我再也找不到它了......) –

回答

5

需要初始化爲Sourcein和德斯坦的屬性。只需在最後加上括號:

Sourcein = ndb.StringProperty() 
Destin = ndb.StringProperty() 
+0

謝謝,那個是問題。 –

+0

添加括號是我們的關鍵 – Praxiteles

+0

我有類似的問題。我使用'ndb.StringProperty()'而不是'db.StringProperty()'來解決它。 – christangrant

相關問題