from sqlalchemy import util, exceptions
import types
-from sqlalchemy.orm import mapper
+from sqlalchemy.orm import mapper, Query
+def _monkeypatch_query_method(name, ctx, class_):
+ def do(self, *args, **kwargs):
+ query = Query(class_, session=ctx.current)
+ util.warn_deprecated('Query methods on the class are deprecated; use %s.query.%s instead' % (class_.__name__, name))
+ return getattr(query, name)(*args, **kwargs)
+ try:
+ do.__name__ = name
+ except:
+ pass
+ if not hasattr(class_, name):
+ setattr(class_, name, classmethod(do))
+
def _monkeypatch_session_method(name, ctx, class_):
def do(self, *args, **kwargs):
session = ctx.current
if not hasattr(class_, 'query'):
class_.query = query()
- for name in ['refresh', 'expire', 'delete', 'expunge', 'update']:
+ for name in ('get', 'filter', 'filter_by', 'select', 'select_by', 'selectfirst', 'selectfirst_by', 'selectone', 'selectone_by', 'get_by', 'join_to', 'join_via', 'count', 'count_by', 'options', 'instances'):
+ _monkeypatch_query_method(name, ctx, class_)
+ for name in ('refresh', 'expire', 'delete', 'expunge', 'update'):
_monkeypatch_session_method(name, ctx, class_)
m = mapper(class_, extension=extension, *args, **kwargs)
rendered in the ``FROM`` clause of this select statement.
"""
- scalar = kwargs.pop('scalar', False)
- if scalar:
+ if 'scalar' in kwargs:
util.warn_deprecated('scalar option is deprecated; see docs for details')
+ scalar = kwargs.pop('scalar', False)
s = Select(columns, whereclause=whereclause, from_obj=from_obj, **kwargs)
if scalar:
return s.as_scalar()