summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-01-10 18:05:20 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-01-10 18:05:20 +0000
commit062b8c0eb1ce22944503c28e2de6d2cabe78acf7 (patch)
tree609ee3ddf560b39f9242586998c069b5ce555050 /lib/sqlalchemy
parent37570dc25e9f688f8d370ffe8955bb395c82d15a (diff)
downloadsqlalchemy-062b8c0eb1ce22944503c28e2de6d2cabe78acf7.tar.gz
- added extra fk override test
- proper error message is raised when trying to access expired instance attributes with no session present
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/mapper.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index 19e9c35e9..dcfae524f 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -1529,8 +1529,16 @@ def _load_scalar_attributes(instance, attribute_names):
global object_session
if not object_session:
from sqlalchemy.orm.session import object_session
+
+ session = object_session(instance)
+ mapper = object_mapper(instance)
+ if not session:
+ try:
+ session = mapper.get_session()
+ except exceptions.InvalidRequestError:
+ raise exceptions.InvalidRequestError("Instance %s is not bound to a Session, and no contextual session is established; attribute refresh operation cannot proceed" % (instance.__class__))
- if object_session(instance).query(object_mapper(instance))._get(instance._instance_key, refresh_instance=instance._state, only_load_props=attribute_names) is None:
+ if session.query(mapper)._get(instance._instance_key, refresh_instance=instance._state, only_load_props=attribute_names) is None:
raise exceptions.InvalidRequestError("Could not refresh instance '%s'" % instance_str(instance))
def _state_mapper(state, entity_name=None):