summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/sql')
-rw-r--r--lib/sqlalchemy/sql/compiler.py4
-rw-r--r--lib/sqlalchemy/sql/expression.py11
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):