From 10e222521ad0a3c681f6ac47de723ac340dfe6d8 Mon Sep 17 00:00:00 2001 From: alex_nanou Date: Thu, 4 Jan 2007 23:21:23 +0000 Subject: [PATCH] *** empty log message *** --- CHANGES | 5 ++++- PKG-INFO | 2 +- pli/persistance/sql/core.py | 22 ++++++++++++++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index ad5b394..2215878 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -# this file was generated on [200611241457] +# this file was generated on [200701050208] pli changes: +version 0.0.181 (200701050206): +added support for None in persistence.sql... + version 0.0.166 (200512090249): - added pli.pattern.mixin.history.StateHistoryWithArchiveMixin. diff --git a/PKG-INFO b/PKG-INFO index 8b943db..39217c9 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: pli -Version: 0.0.180 +Version: 0.0.181 Summary: PLI: a utility library for the Python language. Home-page: http://pli.sourceforge.net/ Author: Alex A. Naanou diff --git a/pli/persistance/sql/core.py b/pli/persistance/sql/core.py index d28d355..8232458 100755 --- a/pli/persistance/sql/core.py +++ b/pli/persistance/sql/core.py @@ -1,7 +1,7 @@ #======================================================================= -__version__ = '''0.0.01''' -__sub_version__ = '''20060901194810''' +__version__ = '''0.0.05''' +__sub_version__ = '''20070105020543''' __copyright__ = '''(c) Alex A. Naanou 2003''' @@ -210,8 +210,12 @@ class SQLWriter(object): # insert the element... ## name_id = self.write(n) ## self.sql.insert('py_object_attribute', pyoid=obj_id, name=name_id, value=val_id) - val_id = self.write(getattr(obj, n)) - self.sql.insert('py_object_attribute', pyoid=obj_id, name=n, value=val_id) + # the if here is to avoid special cases like None and Guido + # knows what that may not have a special attr like __dict__ + # in the case of None.... #$%^&* + if hasattr(obj, n): + val_id = self.write(getattr(obj, n)) + self.sql.insert('py_object_attribute', pyoid=obj_id, name=n, value=val_id) return obj_id # pickle handlers... @registertypehandler(type) @@ -221,6 +225,10 @@ class SQLWriter(object): obj_id = self.sql.insert('py_object', type='py_pickled_class').lastrowid obj_id = self.sql.select('pyoid', 'py_object', self.sql.where(oid=obj_id)).fetchone()[0] + # for some reason pickle can't pickle NoneType.... + if cls == types.NoneType: + cls = None + self.sql.insert('py_pickled_class', pyoid=obj_id, pickle=pickle.dumps(cls)) @@ -400,6 +408,9 @@ class SQLReader(object): for n, v in dct.items(): dct[n] = self.get(v) cls = dct.pop('__class__') + # there is only one None object and it is already created... + if cls in (types.NoneType, None): + return None # generate the object... o = Object() for n, v in dct.items(): @@ -416,6 +427,9 @@ class SQLReader(object): # get the object... o = self.sql.select('pickle', 'py_pickled_class', self.sql.where(pyoid=oid)).fetchone()[0] o = pickle.loads(o) + # NoneType is represented as None... + if o == None: + return types.NoneType # XXX reconstruct attrs... return o @registertablehandler('py_pickled_function') -- 2.11.4.GIT