]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- implemented __len__() accessor on RowProxy
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 21 Aug 2007 15:50:17 +0000 (15:50 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 21 Aug 2007 15:50:17 +0000 (15:50 +0000)
- implemented jek's ClauseParameters optimization for named params

lib/sqlalchemy/engine/base.py
lib/sqlalchemy/sql/util.py

index 2605bce5724cb0d6e801d5de1e8b3027a5f6fe2a..40999f3ef755eb874a9cff0752191d9922f6bd99 100644 (file)
@@ -1530,6 +1530,9 @@ class RowProxy(object):
     def __contains__(self, key):
         return self.__parent._has_key(self.__row, key)
 
+    def __len__(self):
+        return len(self.__row)
+        
     def __iter__(self):
         for i in range(0, len(self.__row)):
             yield self.__parent._get_col(self.__row, i)
index a1d44ccfe67bc0734c4460520255a02a685a8d2c..37e7a7d4776d9ad7549aaa5e709421d45402bbcb 100644 (file)
@@ -68,12 +68,6 @@ class ClauseParameters(object):
     def get_original_dict(self):
         return dict([(name, value) for (b, name, value) in self.__binds.values()])
 
-    def __get_processed(self, key, processors):
-        if key in processors:
-            return processors[key](self.__binds[key][2])
-        else:
-            return self.__binds[key][2]
-
     def get_raw_list(self, processors):
         binds, res = self.__binds, []
         for key in self.positional:
@@ -84,23 +78,22 @@ class ClauseParameters(object):
         return res
 
     def get_raw_dict(self, processors, encode_keys=False):
+        binds, res = self.__binds, {}
         if encode_keys:
-            return dict([
-                (
-                    key.encode(self.dialect.encoding),
-                    self.__get_processed(key, processors)
-                )
-                for key in self.keys()
-            ])
+            encoding = self.dialect.encoding
+            for key in self.keys():
+                if key in processors:
+                    res[key.encode(encoding)] = processors[key](binds[key][2])
+                else:
+                    res[key.encode(encoding)] = binds[key][2]
         else:
-            return dict([
-                (
-                    key,
-                    self.__get_processed(key, processors)
-                )
-                for key in self.keys()
-            ])
-
+            for key in self.keys():
+                if key in processors:
+                    res[key] = processors[key](binds[key][2])
+                else:
+                    res[key] = binds[key][2]
+        return res
+        
     def __repr__(self):
         return self.__class__.__name__ + ":" + repr(self.get_original_dict())