我使用云引擎、存储、和lleancache服务,关于所有数据中为date类型的处理有问题,2年前发过帖子询问,但一直没得到解决。 Python 2.7.13, Python SDK 2.5.0
目标:
将各数据obj.dump()后,用cPickle处理后,按id存在leanCache里,以便于提高查询速度,此步已经实现。问题是在查询后得到的数据先cPickle.loads()处理得到一个dictionary(以下代码中的data_dict),将此dictionary重新处理为object过程中,会有问题。
我使用的主要操作简略如下:
ClassType = leancloud.Object.extend(className)
obj = ClassType()
obj.set(data_dict)
问题1:如果不作处理,所有date类型字段中,只有updatedAt和createdAt这两个字段会正确进行时区计算并处理为datetime.datetime格式;其他所有自定义的date格式字段都是dict类型,用print展示如下(updatedAt是leancloud默认字段,updatedDate是我自定义的):
updatedAt = 2020-02-19 05:06:13.490000+08:00 , type = , updatedDate = {u'__type': u'Date', u'iso': u'2019-03-03T00:45:58.539Z'} , type =
问题2:如果做处理,即将所有date类型手动转换为datetime.datetime并按时区换算为正确值后,使用obj.set(key, value) 的方式放入gameObject,此时除了updatedAt和CreatedAt字段外都是正确的,但这俩字段会提示错误,报错如下:
问题3:不做特殊处理只用obj.set(data_dict) 时,ACL字段、pointer类型的字段,也是有问题的
希望能详细讲一下如何才是正确的将dict格式数据重建为leancloud object格式,谢谢!