]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- add dummy column to appease older SQLite verisons in unicode.py
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 4 Feb 2008 21:47:42 +0000 (21:47 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 4 Feb 2008 21:47:42 +0000 (21:47 +0000)
- add test "escape_literal_column" comiler method to start addressing literal '%' character

lib/sqlalchemy/sql/compiler.py
test/sql/unicode.py

index 71bfd17658f8cc2ea4618dd01b931b27e9104f9b..5cfb42a6319921450be9a1f9aec14df64a933b2b 100644 (file)
@@ -269,16 +269,20 @@ class DefaultCompiler(engine.Compiled):
                 return None
         elif column.table is None or not column.table.named_with_column:
             if getattr(column, "is_literal", False):
-                return name
+                return self.escape_literal_column(name)
             else:
                 return self.preparer.quote(column, name)
         else:
             if getattr(column, "is_literal", False):
-                return self.preparer.quote(column.table, ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)) + "." + name
+                return self.preparer.quote(column.table, ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)) + "." + self.escape_literal_column(name)
             else:
                 return self.preparer.quote(column.table, ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)) + "." + self.preparer.quote(column, name)
 
+    def escape_literal_column(self, text):
+        """provide escaping for the literal_column() construct."""
 
+        return re.sub('%', '%%', text)
+        
     def visit_fromclause(self, fromclause, **kwargs):
         return fromclause.name
 
index 98a2b6aa2b643cb38b94a47eba31a3678e574339..6f035f2bfc4c9fb9a6536f2efc6137d1da05bd6a 100644 (file)
@@ -116,7 +116,9 @@ class EscapesDefaultsTest(testing.PersistTest):
     def test_default_exec(self):
         metadata = MetaData(testing.db)
         t1 = Table('t1', metadata,
-            Column(u'special_col', Integer, Sequence('special_col'), primary_key=True))
+            Column(u'special_col', Integer, Sequence('special_col'), primary_key=True),
+            Column('data', String(50)) # to appease SQLite without DEFAULT VALUES
+            )
         t1.create()
 
         try: