如何排除持久对象的基本类型属性不被持久化?

时间:2012-10-26 02:17:02

标签: python persistent zodb

例如,如果类型是对象的int或str属性,那么如何在对象的类中将其排除。是不是你必须在属性之前声明一个装饰器,那么它是什么?

1 个答案:

答案 0 :(得分:2)

Persistent Rules:

  
      
  • 您的对象及其属性必须是“pickleable”。
  •   
  • 您的对象不能包含以“ p ”开头的任何属性。
  •   
  • _v_开头的对象属性为“易变”且未保存到数据库(请参阅下一节)。
  •   
  • 您必须明确表示对可变属性(例如实例,列表和词典)所做的任何更改或使用   持久版本的可变对象,如
      “ZODB.PersistentMapping”
  •   
     

第三条规则是以_v_开头的所有对象属性都是   “volatile”并没有保存到数据库中。这意味着那么久   由于持久对象是Zope内存缓存中的volatile属性   可以使用。停用对象时(从内存中删除)   挥发性属性被丢弃。

     

易失性属性对于适合缓存的数据非常有用   虽然但往往可以扔掉,轻松地重新创建。文件   连接,缓存计算,渲染模板,所有这些   各种东西都是volatile属性的有用应用。您   使用volatile属性时必须小心。既然你有   很少控制对象移入和移出内存的时间,   你永远不知道什么时候你的不稳定属性可能会消失。