使用appengine的数据存储框架,什么是pythonic方式来持久化{}?如何使持久化在谷歌appengine上的python字典
2
A
回答
2
我认为有2个选项。
使用expando。
class SomeModel(db.Expando): pass your_model = SomeModel() for k, v in your_dict.iteritems(): setattr(your_model, k, v)
可能可以使用
your_model.__dict__.update(your_dict)
,但我不知道这一点:当你忽略保留字段可以,只要存储的东西。储存于使用泡菜一个文本框:
class SomeModel(db.Model): pickled_data = db.BlobProperty() your_model = SomeModel() your_model.pickled_data = pickle.dumps(your_dict)
3
你应该保存它使用pickle.dumps和使用pickle.loads
5
你只需要,如果你打算在个体词典查询元素使用的expando选项。
假设你不想这样做,那么你可以使用一个自定义属性 -
class ObjectProperty(db.Property):
data_type = db.Blob
def get_value_for_datastore(self, model_instance):
value = self.__get__(model_instance, model_instance.__class__)
pickled_val = pickle.dumps(value)
if value is not None: return db.Blob(pickled_val)
def make_value_from_datastore(self, value):
if value is not None: return pickle.loads(str(value))
def default_value(self):
return copy.copy(self.default)
注意上面的属性DEF我从一些代码,尼克·约翰逊产生了。这是一个project on git hub,并包含许多其他自定义属性。
相关问题
- 1. 如何在谷歌的AppEngine
- 2. 谷歌AppEngine上不支持FileOutputStream中
- 3. 如何在谷歌appengine ndb
- 4. 谷歌端点,物化和持久
- 5. 在谷歌的AppEngine
- 6. 谷歌Appengine上的django
- 7. FacebookXmlRestClient谷歌AppEngine上的NotSerializableException
- 8. 在谷歌appengine上使用HTTP流
- 9. 谷歌Apps脚本持久
- 10. 如何在保存在谷歌的AppEngine
- 11. 谷歌AppEngine上:使复杂的查询
- 12. 谷歌的oauth2在GWT和AppEngine上
- 13. 谷歌appengine-db.key()
- 14. 与谷歌AppEngine上使用pytest
- 15. 问题在谷歌的AppEngine
- 16. 在谷歌的AppEngine运行
- 17. 名在谷歌的AppEngine
- 18. 如何实现持久化Python列表?
- 19. 文件上传到谷歌云存储AppEngine上(Python)的
- 20. 如何在谷歌appengine中调用请求处理程序,python
- 21. 如何解决谷歌的AppEngine
- 22. 环境谷歌Appengine
- 23. 谷歌字典API的json_decode
- 24. 谷歌appengine上的花车列表
- 25. Phpstorm不能上传到谷歌的AppEngine
- 26. 谷歌AppEngine上的备份报告ApiTemporaryUnavailableError
- 27. 如何在Eclipse/Python/Appengine中使用持久本地NDB数据进行调试?
- 28. 如何改变一组Python和谷歌的AppEngine
- 29. 在谷歌的AppEngine如何删除使用的FileService
- 30. AppEngine持久对象延迟?
tnx for link! http://github.com/Arachnid/aetycoon/blob/master/__init__.py – fdb 2010-07-08 14:35:19
如果您使用自定义属性,则不需要在每次要读取该值时明确地取消该值。没问题。链接:) – hawkett 2010-07-08 14:52:13
确实,你的选择更加优雅:) +1 – Wolph 2010-07-08 15:36:35