From c3bdad10a384f779624f015a34ada785ad2dedf5 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 10 Aug 2009 04:48:00 +0000 Subject: - 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 --- lib/sqlalchemy/dialects/mysql/mysqldb.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'lib/sqlalchemy/dialects/mysql/mysqldb.py') diff --git a/lib/sqlalchemy/dialects/mysql/mysqldb.py b/lib/sqlalchemy/dialects/mysql/mysqldb.py index 6ecfc4b84..a7764add7 100644 --- a/lib/sqlalchemy/dialects/mysql/mysqldb.py +++ b/lib/sqlalchemy/dialects/mysql/mysqldb.py @@ -24,7 +24,7 @@ import decimal import re from sqlalchemy.dialects.mysql.base import (DECIMAL, MySQLDialect, MySQLExecutionContext, - MySQLCompiler, NUMERIC, _NumericType) + MySQLCompiler, MySQLIdentifierPreparer, NUMERIC, _NumericType) from sqlalchemy.engine import base as engine_base, default from sqlalchemy.sql import operators as sql_operators from sqlalchemy import exc, log, schema, sql, types as sqltypes, util @@ -66,6 +66,11 @@ class _MySQLdbNumeric(_DecimalType, NUMERIC): class _MySQLdbDecimal(_DecimalType, DECIMAL): pass +class MySQL_mysqldbIdentifierPreparer(MySQLIdentifierPreparer): + + def _escape_identifier(self, value): + value = value.replace(self.escape_quote, self.escape_to_quote) + return value.replace("%", "%%") class MySQL_mysqldb(MySQLDialect): driver = 'mysqldb' @@ -76,7 +81,8 @@ class MySQL_mysqldb(MySQLDialect): default_paramstyle = 'format' execution_ctx_cls = MySQL_mysqldbExecutionContext statement_compiler = MySQL_mysqldbCompiler - + preparer = MySQL_mysqldbIdentifierPreparer + colspecs = util.update_copy( MySQLDialect.colspecs, { -- cgit v1.2.1