summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/compiler.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-09-02 11:48:15 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2016-09-02 11:48:15 -0400
commit9a6947427af58eeb6ebf09ec6de2a1b7ec12d828 (patch)
tree963379c329e48e7dfb82ef49a3a24bc514ffb254 /lib/sqlalchemy/sql/compiler.py
parentf6022839c29f7f96cb9d279aaf2e44e81cafb661 (diff)
downloadsqlalchemy-9a6947427af58eeb6ebf09ec6de2a1b7ec12d828.tar.gz
Allow stringify compiler to render unnamed column
Stringify of expression with unnamed :class:`.Column` objects, as occurs in lots of situations including ORM error reporting, will now render the name in string context as "<name unknown>" rather than raising a compile error. Change-Id: I76f637c5eb4cfdb1b526964cb001565b97e296da Fixes: #3789
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r--lib/sqlalchemy/sql/compiler.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py
index 85d5ff6da..a7954f10a 100644
--- a/lib/sqlalchemy/sql/compiler.py
+++ b/lib/sqlalchemy/sql/compiler.py
@@ -660,12 +660,15 @@ class SQLCompiler(Compiled):
return label.element._compiler_dispatch(
self, within_columns_clause=False, **kw)
+ def _fallback_column_name(self, column):
+ raise exc.CompileError("Cannot compile Column object until "
+ "its 'name' is assigned.")
+
def visit_column(self, column, add_to_result_map=None,
include_table=True, **kwargs):
name = orig_name = column.name
if name is None:
- raise exc.CompileError("Cannot compile Column object until "
- "its 'name' is assigned.")
+ name = self._fallback_column_name(column)
is_literal = column.is_literal
if not is_literal and isinstance(name, elements._truncated_label):
@@ -2203,6 +2206,9 @@ class StrSQLCompiler(SQLCompiler):
"""
+ def _fallback_column_name(self, column):
+ return "<name unknown>"
+
def visit_getitem_binary(self, binary, operator, **kw):
return "%s[%s]" % (
self.process(binary.left, **kw),
@@ -2210,7 +2216,6 @@ class StrSQLCompiler(SQLCompiler):
)
def returning_clause(self, stmt, returning_cols):
-
columns = [
self._label_select_column(None, c, True, False, {})
for c in elements._select_iterables(returning_cols)