diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-13 19:27:14 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-13 19:27:14 +0000 |
commit | ffe0ab5ba62be5df4c18829131cd58a52966d3b7 (patch) | |
tree | 2a99d07ffb25544c6fbc107fb00bec9e80bed9bf /lib/sqlalchemy/orm/state.py | |
parent | 6b10e0b26d226258d5cbcbb686629c9b82e9266b (diff) | |
download | sqlalchemy-ffe0ab5ba62be5df4c18829131cd58a52966d3b7.tar.gz |
- For those who might use debug logging on
sqlalchemy.orm.strategies, most logging calls during row
loading have been removed. These were never very helpful
and cluttered up the code.
- Some internal streamlining of object loading grants a
small speedup for large results, estimates are around
10-15%.
Diffstat (limited to 'lib/sqlalchemy/orm/state.py')
-rw-r--r-- | lib/sqlalchemy/orm/state.py | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/lib/sqlalchemy/orm/state.py b/lib/sqlalchemy/orm/state.py index 14c677b89..4bb9219f4 100644 --- a/lib/sqlalchemy/orm/state.py +++ b/lib/sqlalchemy/orm/state.py @@ -6,6 +6,9 @@ from sqlalchemy.orm.attributes import PASSIVE_NO_RESULT, PASSIVE_OFF, \ ATTR_WAS_SET from sqlalchemy.orm import attributes, exc as orm_exc, interfaces +import sys +attributes.state = sys.modules['sqlalchemy.orm.state'] + class InstanceState(object): """tracks state information at the instance level.""" @@ -18,17 +21,29 @@ class InstanceState(object): insert_order = None mutable_dict = None _strong_obj = None + modified = False + expired = False def __init__(self, obj, manager): self.class_ = obj.__class__ self.manager = manager self.obj = weakref.ref(obj, self._cleanup) - self.modified = False - self.callables = {} - self.expired = False - self.committed_state = {} - self.pending = {} - self.parents = {} + + @util.memoized_property + def committed_state(self): + return {} + + @util.memoized_property + def parents(self): + return {} + + @util.memoized_property + def pending(self): + return {} + + @util.memoized_property + def callables(self): + return {} def detach(self): if self.session_id: @@ -123,7 +138,7 @@ class InstanceState(object): def _run_on_load(self, instance): self.manager.events.run('on_load', instance) - + def __getstate__(self): d = { 'instance':self.obj(), @@ -133,7 +148,7 @@ class InstanceState(object): (k, self.__dict__[k]) for k in ( 'committed_state', 'pending', 'parents', 'modified', 'expired', 'callables' - ) if self.__dict__[k] + ) if self.__dict__.get(k, False) ) d.update( |