From 5bc1f17cb53248e7cea609693a3b2a9bb702545b Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 2 Jan 2009 21:24:17 +0000 Subject: - mysql, postgres: "%" signs in text() constructs are automatically escaped to "%%". Because of the backwards incompatible nature of this change, a warning is emitted if '%%' is detected in the string. [ticket:1267] --- lib/sqlalchemy/databases/mysql.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/sqlalchemy/databases/mysql.py') diff --git a/lib/sqlalchemy/databases/mysql.py b/lib/sqlalchemy/databases/mysql.py index 86fb7b247..1b977dce9 100644 --- a/lib/sqlalchemy/databases/mysql.py +++ b/lib/sqlalchemy/databases/mysql.py @@ -1952,6 +1952,11 @@ class MySQLCompiler(compiler.DefaultCompiler): return 'CAST(%s AS %s)' % (self.process(cast.clause), type_) + def post_process_text(self, text): + if '%%' in text: + util.warn("The SQLAlchemy MySQLDB dialect now automatically escapes '%' in text() expressions to '%%'.") + return text.replace('%', '%%') + def get_select_precolumns(self, select): if isinstance(select._distinct, basestring): return select._distinct.upper() + " " -- cgit v1.2.1