]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
send along the sqlsoup engine for encoding purposes.
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 21 Jan 2010 20:52:37 +0000 (20:52 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 21 Jan 2010 20:52:37 +0000 (20:52 +0000)
lib/sqlalchemy/ext/sqlsoup.py

index 6b977102c9d71ba0e3bd9e162cc9fe62349bbcd3..5377fee35f181ece6d64f094c5d390a95a23f8e5 100644 (file)
@@ -395,14 +395,15 @@ def _selectable_name(selectable):
             x = x[1:]
         return x
 
-def class_for_table(session, selectable, **mapper_kwargs):
+def _class_for_table(session, engine, selectable, **mapper_kwargs):
     selectable = expression._clause_element_as_expr(selectable)
     mapname = 'Mapped' + _selectable_name(selectable)
     # Py2K
     if isinstance(mapname, unicode): 
-        engine_encoding = selectable.metadata.bind.dialect.encoding 
+        engine_encoding = engine.dialect.encoding 
         mapname = mapname.encode(engine_encoding)
     # end Py2K
+    
     if isinstance(selectable, Table):
         klass = TableClassType(mapname, (object,), {})
     else:
@@ -457,11 +458,11 @@ class SqlSoup(object):
             
         self._cache = {}
         self.schema = None
-        
+    
+    @property
     def engine(self):
         return self._metadata.bind
 
-    engine = property(engine)
     bind = engine
 
     def delete(self, *args, **kwargs):
@@ -502,7 +503,7 @@ class SqlSoup(object):
         try:
             t = self._cache[selectable]
         except KeyError:
-            t = class_for_table(self.session, selectable, **kwargs)
+            t = _class_for_table(self.session, self.engine, selectable, **kwargs)
             self._cache[selectable] = t
         return t
 
@@ -525,7 +526,7 @@ class SqlSoup(object):
             if not table.primary_key.columns:
                 raise PKNotFoundError('table %r does not have a primary key defined [columns: %s]' % (attr, ','.join(table.c.keys())))
             if table.columns:
-                t = class_for_table(self.session, table)
+                t = _class_for_table(self.session, self.engine, table)
             else:
                 t = None
             self._cache[attr] = t