summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/mapper.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2005-10-23 20:16:23 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2005-10-23 20:16:23 +0000
commitf56d75c3ad9fbe7ff85b5b65698cd5696d12ee28 (patch)
treeb9c6d4971418db4fdadf0412a6b6317cdc0f53d1 /lib/sqlalchemy/mapper.py
parent52e8a494b7fea6414dece965a3d240b1114e40a3 (diff)
downloadsqlalchemy-f56d75c3ad9fbe7ff85b5b65698cd5696d12ee28.tar.gz
Diffstat (limited to 'lib/sqlalchemy/mapper.py')
-rw-r--r--lib/sqlalchemy/mapper.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/lib/sqlalchemy/mapper.py b/lib/sqlalchemy/mapper.py
index c90b50769..f541182aa 100644
--- a/lib/sqlalchemy/mapper.py
+++ b/lib/sqlalchemy/mapper.py
@@ -312,7 +312,7 @@ class Mapper(object):
objectstore.uow().register_clean(value)
if len(mappers):
- return result + otherresults
+ return [result] + otherresults
else:
return result
@@ -375,9 +375,21 @@ class Mapper(object):
in this case, the developer must insure that an adequate set of columns exists in the
rowset with which to build new object instances."""
if arg is not None and isinstance(arg, sql.Select):
- return self._select_statement(arg, **params)
+ return self.select_statement(arg, **params)
else:
- return self._select_whereclause(arg, **params)
+ return self.select_whereclause(arg, **params)
+
+ def select_whereclause(self, whereclause = None, order_by = None, **params):
+ statement = self._compile(whereclause, order_by = order_by)
+ return self.select_statement(statement, **params)
+
+ def select_statement(self, statement, **params):
+ statement.use_labels = True
+ return self.instances(statement.execute(**params))
+
+ def select_text(self, text, **params):
+ t = sql.text(text, engine=self.primarytable.engine)
+ return self.instances(t.execute(**params))
def _getattrbycolumn(self, obj, column):
try:
@@ -494,13 +506,6 @@ class Mapper(object):
statement.use_labels = True
return statement
- def _select_whereclause(self, whereclause = None, order_by = None, **params):
- statement = self._compile(whereclause, order_by = order_by)
- return self._select_statement(statement, **params)
-
- def _select_statement(self, statement, **params):
- statement.use_labels = True
- return self.instances(statement.execute(**params))
def _identity_key(self, row):
return objectstore.get_row_key(row, self.class_, self.primarytable, self.primary_keys[self.table])
@@ -539,7 +544,7 @@ class Mapper(object):
# check if primary keys in the result are None - this indicates
# an instance of the object is not present in the row
for col in self.primary_keys[self.table]:
- if row[col.label] is None:
+ if row[col] is None:
return None
# plugin point
instance = self.extension.create_instance(self, row, imap, self.class_)
@@ -622,8 +627,7 @@ class ColumnProperty(MapperProperty):
def execute(self, instance, row, identitykey, imap, isnew):
if isnew:
- instance.__dict__[self.key] = row[self.columns[0].label]
- #setattr(instance, self.key, row[self.columns[0].label])
+ instance.__dict__[self.key] = row[self.columns[0]]
class PropertyLoader(MapperProperty):