summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-12-04 17:06:55 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-12-04 17:06:55 +0000
commitcb46ae4fe97d364e8a160b6114519f125432c1e8 (patch)
tree7587e312c51101ff86a45b4dbaaa5338a0a5ed6a /lib/sqlalchemy
parentf5a4554c52b82cc7fb3da41eb51e6e9b5bd3c526 (diff)
downloadsqlalchemy-cb46ae4fe97d364e8a160b6114519f125432c1e8.tar.gz
- relaxed rules on column_property() expressions having labels; any
ColumnElement is accepted now, as the compiler auto-labels non-labeled ColumnElements now. a selectable, like a select() statement, still requires conversion to ColumnElement via as_scalar() or label().
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/properties.py8
-rw-r--r--lib/sqlalchemy/sql/compiler.py2
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 \