summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/scoping.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-01-25 18:16:12 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-01-25 18:16:12 +0000
commit33a6724e33140861fbd66de61875797408a1e02e (patch)
tree78d22dae3d3b989a58fb8268f0c45088114eca54 /lib/sqlalchemy/orm/scoping.py
parentfadc61e8ca03358fcbb72a9e9446ab7018e295ea (diff)
downloadsqlalchemy-33a6724e33140861fbd66de61875797408a1e02e.tar.gz
- added standalone "query" class attribute generated
by a scoped_session. This provides MyClass.query without using Session.mapper. Use via: MyClass.query = Session.query_property()
Diffstat (limited to 'lib/sqlalchemy/orm/scoping.py')
-rw-r--r--lib/sqlalchemy/orm/scoping.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/scoping.py b/lib/sqlalchemy/orm/scoping.py
index 19cd44884..479b2f737 100644
--- a/lib/sqlalchemy/orm/scoping.py
+++ b/lib/sqlalchemy/orm/scoping.py
@@ -1,5 +1,5 @@
from sqlalchemy.util import ScopedRegistry, to_list, get_cls_kwargs
-from sqlalchemy.orm import MapperExtension, EXT_CONTINUE, object_session
+from sqlalchemy.orm import MapperExtension, EXT_CONTINUE, object_session, class_mapper
from sqlalchemy.orm.session import Session
from sqlalchemy import exceptions
import types
@@ -69,6 +69,30 @@ class ScopedSession(object):
self.session_factory.configure(**kwargs)
+ def query_property(self):
+ """return a class property which produces a `Query` object against the
+ class when called.
+
+ e.g.::
+ Session = scoped_session(sessionmaker())
+
+ class MyClass(object):
+ query = Session.query_property()
+
+ # after mappers are defined
+ result = MyClass.query.filter(MyClass.name=='foo').all()
+
+ """
+
+ class query(object):
+ def __get__(s, instance, owner):
+ mapper = class_mapper(owner, raiseerror=False)
+ if mapper:
+ return self.registry().query(mapper)
+ else:
+ return None
+ return query()
+
def instrument(name):
def do(self, *args, **kwargs):
return getattr(self.registry(), name)(*args, **kwargs)