summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/mapping/mapper.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-03-26 23:51:13 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-03-26 23:51:13 +0000
commitc4e00af9e47bf28cdc9ab9af85514e76c3063a67 (patch)
treead694b34f2e0bdf0e5a45042afd63ac1534a1cc2 /lib/sqlalchemy/mapping/mapper.py
parentcb3be7803bd2d8071ead35d5f053c90f706a678b (diff)
downloadsqlalchemy-c4e00af9e47bf28cdc9ab9af85514e76c3063a67.tar.gz
added always_refresh flag. when the mapper loads rows, it will pull objects from the identity map normally, but always blows away their attributes and replaces with those from the database, including changes
Diffstat (limited to 'lib/sqlalchemy/mapping/mapper.py')
-rw-r--r--lib/sqlalchemy/mapping/mapper.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/sqlalchemy/mapping/mapper.py b/lib/sqlalchemy/mapping/mapper.py
index 8ff28cf56..ed07983e4 100644
--- a/lib/sqlalchemy/mapping/mapper.py
+++ b/lib/sqlalchemy/mapping/mapper.py
@@ -39,6 +39,7 @@ class Mapper(object):
extension = None,
order_by = False,
allow_column_override = False,
+ always_refresh = False,
**kwargs):
if primarytable is not None:
@@ -52,6 +53,7 @@ class Mapper(object):
self.is_primary = is_primary
self.order_by = order_by
self._options = {}
+ self.always_refresh = always_refresh
if not issubclass(class_, object):
raise ArgumentError("Class '%s' is not a new-style class" % class_.__name__)
@@ -308,7 +310,7 @@ class Mapper(object):
return self._get(key, ident)
def _get(self, key, ident=None, reload=False):
- if not reload:
+ if not reload and not self.always_refresh:
try:
return objectstore.get_session()._get(key)
except KeyError:
@@ -815,6 +817,8 @@ class Mapper(object):
# look in main identity map. if its there, we dont do anything to it,
# including modifying any of its related items lists, as its already
# been exposed to being modified by the application.
+
+ populate_existing = populate_existing or self.always_refresh
identitykey = self._identity_key(row)
sess = objectstore.get_session()
if sess.has_key(identitykey):