]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
(no commit message)
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 20 Oct 2005 06:08:01 +0000 (06:08 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 20 Oct 2005 06:08:01 +0000 (06:08 +0000)
lib/sqlalchemy/mapper.py

index db6d8aabf9c6adba500ff2303c99e9ebcad0a43f..842d67f1970db29c95b3ddbf8d2cfd6b86e451e6 100644 (file)
@@ -277,20 +277,32 @@ class Mapper(object):
         prop.init(key, self)
 
     
-    def instances(self, cursor, db):
+    def instances(self, cursor, *mappers):
         result = util.HistoryArraySet()
+        if len(mappers):
+            otherresults = []
+            for m in mappers:
+                otherresults.append(util.HistoryArraySet())
+                
         imap = {}
         while True:
             row = cursor.fetchone()
             if row is None:
                 break
             self._instance(row, imap, result)
-        
+            i = 0
+            for m in mappers:
+                m._instance(row, imap, otherresults[i])
+                i+=1
+                
         # store new stuff in the identity map
         for value in imap.values():
             objectstore.uow().register_clean(value)
-            
-        return result
+
+        if len(mappers):
+            return result + otherresults
+        else:
+            return result
 
     def get(self, *ident):
         """returns an instance of the object based on the given identifier, or None
@@ -469,7 +481,7 @@ class Mapper(object):
 
     def _select_statement(self, statement, **params):
         statement.use_labels = True
-        return self.instances(statement.execute(**params), statement.engine)
+        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])