diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-03-05 20:31:44 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-03-05 20:31:44 +0000 |
commit | 9c4f3c0480f54e08b3aa2800ed76e89f957f8131 (patch) | |
tree | e7cad83cbd55ff0e2a3f4103160e7e8fed6b6a2c /lib/sqlalchemy/sql.py | |
parent | c1d0c2dffc0eedfa63de5b90addb70bfd3a81540 (diff) | |
download | sqlalchemy-9c4f3c0480f54e08b3aa2800ed76e89f957f8131.tar.gz |
got column onupdate working
improvement to Function so that they can more easily be called standalone without having to throw them into a select().
Diffstat (limited to 'lib/sqlalchemy/sql.py')
-rw-r--r-- | lib/sqlalchemy/sql.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index f05310e42..cee328b53 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -762,6 +762,9 @@ class Function(ClauseList, ColumnElement): def __init__(self, name, *clauses, **kwargs): self.name = name self.type = kwargs.get('type', sqltypes.NULLTYPE) + self._engine = kwargs.get('engine', None) + if self._engine is not None: + self.type = self._engine.type_descriptor(self.type) ClauseList.__init__(self, parens=True, *clauses) key = property(lambda self:self.name) def append(self, clause): @@ -771,6 +774,8 @@ class Function(ClauseList, ColumnElement): else: clause = BindParamClause(self.name, clause, shortname=self.name, type=None) self.clauses.append(clause) + def _process_from_dict(self, data, asfrom): + data.setdefault(self, self) def copy_container(self): clauses = [clause.copy_container() for clause in self.clauses] return Function(self.name, type=self.type, *clauses) @@ -782,6 +787,10 @@ class Function(ClauseList, ColumnElement): return BindParamClause(self.name, obj, shortname=self.name, type=self.type) def select(self): return select([self]) + def scalar(self): + return select([self]).scalar() + def execute(self): + return select([self]).execute() def _compare_type(self, obj): return self.type |