summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/mapping/mapper.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-02-05 00:19:14 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-02-05 00:19:14 +0000
commit1d20ecbb6d0f0f8cfbb0a54e2a3aaf6cead23ecb (patch)
tree7092c12ed6a625137361ad35448936197a2d3ff6 /lib/sqlalchemy/mapping/mapper.py
parentf0aa20cab011488b1cdecb5ed9bc68fc1ef1f73e (diff)
downloadsqlalchemy-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/mapping/mapper.py')
-rw-r--r--lib/sqlalchemy/mapping/mapper.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/sqlalchemy/mapping/mapper.py b/lib/sqlalchemy/mapping/mapper.py
index 7e11f5ebe..4516ae7b3 100644
--- a/lib/sqlalchemy/mapping/mapper.py
+++ b/lib/sqlalchemy/mapping/mapper.py
@@ -578,6 +578,14 @@ class Mapper(object):
if self._getattrbycolumn(obj, col) is None:
self._setattrbycolumn(obj, col, primary_key[i])
i+=1
+ if table.engine.lastrow_has_defaults():
+ clause = sql.and_()
+ for p in self.pks_by_table[table]:
+ clause.clauses.append(p == self._getattrbycolumn(obj, p))
+ row = table.select(clause).execute().fetchone()
+ for c in table.c:
+ if self._getattrbycolumn(obj, col) is None:
+ self._setattrbycolumn(obj, col, row[c])
self.extension.after_insert(self, obj)
def delete_obj(self, objects, uow):