diff options
author | Philip Jenvey <pjenvey@underboss.org> | 2009-08-11 05:12:50 +0000 |
---|---|---|
committer | Philip Jenvey <pjenvey@underboss.org> | 2009-08-11 05:12:50 +0000 |
commit | 1b43a06aaccf9ed17db7364896dab50761a44e34 (patch) | |
tree | d186174b74f48df5446dfed30d9dd5e425dd1ae1 /lib/sqlalchemy/dialects/postgresql/psycopg2.py | |
parent | cd33d09ce08f04078840b322d203a9f262513a3f (diff) | |
download | sqlalchemy-1b43a06aaccf9ed17db7364896dab50761a44e34.tar.gz |
move postgresql's % escape handling out of base
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql/psycopg2.py')
-rw-r--r-- | lib/sqlalchemy/dialects/postgresql/psycopg2.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/psycopg2.py b/lib/sqlalchemy/dialects/postgresql/psycopg2.py index a428878ae..973bacd06 100644 --- a/lib/sqlalchemy/dialects/postgresql/psycopg2.py +++ b/lib/sqlalchemy/dialects/postgresql/psycopg2.py @@ -42,7 +42,7 @@ from sqlalchemy.engine import base, default from sqlalchemy.sql import expression from sqlalchemy.sql import operators as sql_operators from sqlalchemy import types as sqltypes -from sqlalchemy.dialects.postgresql.base import PGDialect, PGCompiler +from sqlalchemy.dialects.postgresql.base import PGDialect, PGCompiler, PGIdentifierPreparer class _PGNumeric(sqltypes.Numeric): def bind_processor(self, dialect): @@ -93,6 +93,7 @@ class PostgreSQL_psycopg2ExecutionContext(default.DefaultExecutionContext): else: return base.ResultProxy(self) + class PostgreSQL_psycopg2Compiler(PGCompiler): def visit_mod(self, binary, **kw): return self.process(binary.left) + " %% " + self.process(binary.right) @@ -100,6 +101,13 @@ class PostgreSQL_psycopg2Compiler(PGCompiler): def post_process_text(self, text): return text.replace('%', '%%') + +class PostgreSQL_psycopg2IdentifierPreparer(PGIdentifierPreparer): + def _escape_identifier(self, value): + value = value.replace(self.escape_quote, self.escape_to_quote) + return value.replace('%', '%%') + + class PostgreSQL_psycopg2(PGDialect): driver = 'psycopg2' supports_unicode_statements = False @@ -107,6 +115,7 @@ class PostgreSQL_psycopg2(PGDialect): supports_sane_multi_rowcount = False execution_ctx_cls = PostgreSQL_psycopg2ExecutionContext statement_compiler = PostgreSQL_psycopg2Compiler + preparer = PostgreSQL_psycopg2IdentifierPreparer colspecs = util.update_copy( PGDialect.colspecs, |