diff options
Diffstat (limited to 'lib/sqlalchemy/sql')
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/expression.py | 11 |
2 files changed, 9 insertions, 6 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 5b62e1db6..31fc9ae1e 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -653,12 +653,12 @@ class DefaultCompiler(engine.Compiled): if self.column_keys is None: parameters = {} else: - parameters = dict((getattr(key, 'key', key), None) + parameters = dict((sql._column_as_key(key), None) for key in self.column_keys) if stmt.parameters is not None: for k, v in stmt.parameters.iteritems(): - parameters.setdefault(getattr(k, 'key', k), v) + parameters.setdefault(sql._column_as_key(k), v) # create a list of column assignment clauses as tuples values = [] diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index b7d4965dd..07df207dd 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -901,6 +901,13 @@ def _labeled(element): else: return element +def _column_as_key(element): + if isinstance(element, basestring): + return element + if hasattr(element, '__clause_element__'): + element = element.__clause_element__() + return element.key + def _literal_as_text(element): if hasattr(element, '__clause_element__'): return element.__clause_element__() @@ -3496,10 +3503,6 @@ class _UpdateBase(ClauseElement): return s def _process_colparams(self, parameters): - - if parameters is None: - return None - if isinstance(parameters, (list, tuple)): pp = {} for i, c in enumerate(self.table.c): |
