使用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