diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-02-05 00:19:14 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-02-05 00:19:14 +0000 |
commit | 1d20ecbb6d0f0f8cfbb0a54e2a3aaf6cead23ecb (patch) | |
tree | 7092c12ed6a625137361ad35448936197a2d3ff6 /lib/sqlalchemy/engine.py | |
parent | f0aa20cab011488b1cdecb5ed9bc68fc1ef1f73e (diff) | |
download | sqlalchemy-1d20ecbb6d0f0f8cfbb0a54e2a3aaf6cead23ecb.tar.gz |
started PassiveDefault, which is a "database-side" default. mapper will go
fetch the most recently inserted row if a table has PassiveDefault's set on it
Diffstat (limited to 'lib/sqlalchemy/engine.py')
-rw-r--r-- | lib/sqlalchemy/engine.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/sqlalchemy/engine.py b/lib/sqlalchemy/engine.py index d99e5eb6c..b00d97de0 100644 --- a/lib/sqlalchemy/engine.py +++ b/lib/sqlalchemy/engine.py @@ -135,6 +135,11 @@ class DefaultRunner(schema.SchemaVisitor): else: return None + def visit_passive_default(self, default): + """passive defaults by definition return None on the app side, + and are post-fetched to get the DB-side value""" + return None + def visit_sequence(self, seq): """sequences are not supported by default""" return None @@ -452,10 +457,13 @@ class SQLEngine(schema.SchemaEngine): else: plist = [parameters] drunner = self.defaultrunner(proxy) + self.context.lastrow_has_defaults = False for param in plist: last_inserted_ids = [] need_lastrowid=False for c in compiled.statement.table.c: + if isinstance(c.default, schema.PassiveDefault): + self.context.lastrow_has_defaults = True if not param.has_key(c.key) or param[c.key] is None: newid = drunner.get_column_default(c) if newid is not None: @@ -471,7 +479,9 @@ class SQLEngine(schema.SchemaEngine): else: self.context.last_inserted_ids = last_inserted_ids - + def lastrow_has_defaults(self): + return self.context.lastrow_has_defaults + def pre_exec(self, proxy, compiled, parameters, **kwargs): """called by execute_compiled before the compiled statement is executed.""" pass |