diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-10-21 03:43:22 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-10-21 03:43:22 +0000 |
commit | 7f60baef89be3a84db09a8208a9b625af6b19876 (patch) | |
tree | fadc97df7677b11281afcae39e1cd1c4c2701952 /lib/sqlalchemy/mapper.py | |
parent | 77aba56a1c2fa62ffe0d8e5a564b75a63ebe1902 (diff) | |
download | sqlalchemy-7f60baef89be3a84db09a8208a9b625af6b19876.tar.gz |
postgres kickin my ass w00p
Diffstat (limited to 'lib/sqlalchemy/mapper.py')
-rw-r--r-- | lib/sqlalchemy/mapper.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/sqlalchemy/mapper.py b/lib/sqlalchemy/mapper.py index 842d67f19..f64074b8b 100644 --- a/lib/sqlalchemy/mapper.py +++ b/lib/sqlalchemy/mapper.py @@ -397,9 +397,17 @@ class Mapper(object): # print "SAVE_OBJ we are " + hash_key(self) + " obj: " + obj.__class__.__name__ + repr(id(obj)) params = {} + for col in table.columns: - if col.primary_key and hasattr(obj, "_instance_key"): - params[col.table.name + "_" + col.key] = self._getattrbycolumn(obj, col) + if col.primary_key: + if hasattr(obj, "_instance_key"): + params[col.table.name + "_" + col.key] = self._getattrbycolumn(obj, col) + else: + # its an INSERT - if its NULL, leave it out as pgsql doesnt + # like it for an autoincrement + value = self._getattrbycolumn(obj, col) + if value is not None: + params[col.key] = value else: params[col.key] = self._getattrbycolumn(obj, col) @@ -730,7 +738,7 @@ class PropertyLoader(MapperProperty): def _compile_synchronizers(self): def compile(binary): - if binary.operator != '=': + if binary.operator != '=' or not isinstance(binary.left, schema.Column) or not isinstance(binary.right, schema.Column): return if binary.left.table == binary.right.table: @@ -998,7 +1006,11 @@ class EagerLoader(PropertyLoader): towrap = self.parent.table if self.secondaryjoin is not None: - statement._outerjoin = sql.outerjoin(towrap, self.secondary, self.secondaryjoin).outerjoin(self.target, self.primaryjoin) + print self.secondary.name + print str(self.secondaryjoin) + print self.target.name + print str(self.primaryjoin) + statement._outerjoin = sql.outerjoin(towrap, self.secondary, self.primaryjoin).outerjoin(self.target, self.secondaryjoin) else: statement._outerjoin = towrap.outerjoin(self.target, self.primaryjoin) |