summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/compiler.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2009-08-10 04:48:00 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2009-08-10 04:48:00 +0000
commitc3bdad10a384f779624f015a34ada785ad2dedf5 (patch)
tree3c7b7564dd93482cdb63eb205d6f80622f599fba /lib/sqlalchemy/sql/compiler.py
parentd564baf593311ca5bc62dbc401e57986bf9169ba (diff)
downloadsqlalchemy-c3bdad10a384f779624f015a34ada785ad2dedf5.tar.gz
- simplify MySQLIdentifierPreparer into standard pattern,
thus allowing easy subclassing - move % sign logic for MySQLIdentifierPreparer into MySQLdb dialect - paramterize the escape/unescape quote char in IdentifierPreparer - cut out MySQLTableDefinitionParser cruft
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r--lib/sqlalchemy/sql/compiler.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py
index 403ec968b..02824a5f4 100644
--- a/lib/sqlalchemy/sql/compiler.py
+++ b/lib/sqlalchemy/sql/compiler.py
@@ -1259,7 +1259,7 @@ class IdentifierPreparer(object):
illegal_initial_characters = ILLEGAL_INITIAL_CHARACTERS
- def __init__(self, dialect, initial_quote='"', final_quote=None, omit_schema=False):
+ def __init__(self, dialect, initial_quote='"', final_quote=None, escape_quote='"', omit_schema=False):
"""Construct a new ``IdentifierPreparer`` object.
initial_quote
@@ -1276,6 +1276,8 @@ class IdentifierPreparer(object):
self.dialect = dialect
self.initial_quote = initial_quote
self.final_quote = final_quote or self.initial_quote
+ self.escape_quote = escape_quote
+ self.escape_to_quote = self.escape_quote * 2
self.omit_schema = omit_schema
self._strings = {}
@@ -1286,7 +1288,7 @@ class IdentifierPreparer(object):
escaping behavior.
"""
- return value.replace('"', '""')
+ return value.replace(self.escape_quote, self.escape_to_quote)
def _unescape_identifier(self, value):
"""Canonicalize an escaped identifier.
@@ -1295,7 +1297,7 @@ class IdentifierPreparer(object):
unescaping behavior that reverses _escape_identifier.
"""
- return value.replace('""', '"')
+ return value.replace(self.escape_to_quote, self.escape_quote)
def quote_identifier(self, value):
"""Quote an identifier.