diff options
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/properties.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 2 |
2 files changed, 4 insertions, 6 deletions
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py index 806c91a2b..8980a4498 100644 --- a/lib/sqlalchemy/orm/properties.py +++ b/lib/sqlalchemy/orm/properties.py @@ -12,7 +12,7 @@ to handle flush-time dependency sorting and processing. """ from sqlalchemy import sql, schema, util, exceptions, logging -from sqlalchemy.sql import util as sql_util, visitors, operators +from sqlalchemy.sql import util as sql_util, visitors, operators, ColumnElement from sqlalchemy.orm import mapper, sync, strategies, attributes, dependency from sqlalchemy.orm import session as sessionlib from sqlalchemy.orm import util as mapperutil @@ -38,10 +38,8 @@ class ColumnProperty(StrategizedProperty): self.comparator = ColumnProperty.ColumnComparator(self) # sanity check for col in columns: - if not hasattr(col, 'name'): - if hasattr(col, 'label'): - raise ArgumentError('ColumnProperties must be named for the mapper to work with them. Try .label() to fix this') - raise ArgumentError('%r is not a valid candidate for ColumnProperty' % col) + if not isinstance(col, ColumnElement): + raise ArgumentError('column_property() must be given a ColumnElement as its argument. Try .label() or .as_scalar() for Selectables to fix this.') def create_strategy(self): if self.deferred: diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 9b24dd521..d94d3fef6 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -438,7 +438,7 @@ class DefaultCompiler(engine.Compiled): if isinstance(column, sql._Label): return column - if select.use_labels and column._label: + if select.use_labels and getattr(column, '_label', None): return column.label(column._label) if \ |
