나는 pickle 속성을 통해 GAE Gql Datastore에 저장하려고하는 Python 사전이 있습니다. PickleProperty를 사용하여 GAE에 사전 저장
나는이 질문과 답변, Store a list of dictionaries in GAE을 따르려고 노력하지만 아래에있는 내 코드를 작동하지 않습니다 .. 내 목록
내가 설정 피클 속성과에 문제가 있다는 오류가 데이터 모델 클래스는
class PickleProperty(db.Property):
def get_value_for_datastore(self, model_instance):
value = getattr(model_instance, self.name, None)
return pickle.dumps(value)
def make_value_from_datastore(self, value):
return pickle.mloads(value)
class MDB(db.Model):
Name = db.StringProperty(required=True)
Times = PickleProperty()
created = db.DateTimeProperty(auto_now_add = True)
내가 데이터를 삽입하고
인 그것을 읽어 내 코드에서 함수를 다음과 같이 다음과 같이 내가 m_time_manage() 각주를 호출 내 get 함수에서
def m_time_manage(m=""):
if not m:
r = db.GqlQuery("select * from MDB")
else:
#find specific masjid requested
r = db.GqlQuery("select * from MDB where Name = %s" % (s))
#if masjid time data doesn't exist in db throw in placeholders...
if r is None:
times = {}
times['a'] = "8:49"
times['b'] = "10:19"
times_entry = MDB(Name="abc",Times=times)
times_entry.put()
r = db.GqlQuery("select * from MasjidDB")
return (r[0].Name, r[0].Times)
, 나는 pickle.loads 및 파일 오류의 말에 뭔가가 있다는 것을이 오류가
(mName, times) = m_time_manage()
self.write(times)
... 전체 오류입니다 하지만 난 사전에 어떤 도움
line 31, in make_value_from_datastore
return pickle.loads(value)
File "/usr/lib/python2.7/pickle.py", line 1382, in loads
return Unpickler(file).load()
File "/usr/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
File "/usr/lib/python2.7/pickle.py", line 880, in load_eof
raise EOFError
덕분에, 파이썬 사전을 저장하는 방법을 다른 모르겠어요
make_value 함수의 "m"은 오타가 있습니까? 나는 당신이 pickle.mloads() 함수 ("marshal"모듈에서 오는) 함수가 아니라, 보통의 loads() 함수를 원한다고 생각한다. – Blckknght
은'MasjidDB' 코드에서'MDB'와 동일합니까? – aschmid00
예. 그리고 @ Blckknght 이유는 내가 다른 기능을 시도했지만 당신의 도움에 감사드립니다 내가 일할 수있어! – user772401