Fixed operator overloading in SA05 dialect; was doing so globally instead of dialect-local.

This commit is contained in:
Lance Edgar 2010-05-27 13:00:39 -05:00
parent 416a710dff
commit 4369f88c54

View file

@ -25,16 +25,23 @@
from sqlalchemy import types, Column, PrimaryKeyConstraint from sqlalchemy import types, Column, PrimaryKeyConstraint
from sqlalchemy.sql.compiler import OPERATORS from sqlalchemy.sql.compiler import OPERATORS
from sqlalchemy.sql import operators from sqlalchemy.sql import operators as sql_operators
from sqlbase7_sa.sqlbase7 import SQLBase7Dialect from sqlbase7_sa.sqlbase7 import SQLBase7Compiler, SQLBase7Dialect
OPERATORS[operators.ilike_op] = lambda x, y, escape=None: "@lower(%s) LIKE @lower(%s)" % (x, y) + (escape and ' ESCAPE \'%s\'' % escape or '') class SQLBase7Compiler_SA05(SQLBase7Compiler):
operators = SQLBase7Compiler.operators.copy()
operators.update({
sql_operators.ilike_op: lambda x, y, escape=None: "@lower(%s) LIKE @lower(%s)" % (x, y) + (escape and ' ESCAPE \'%s\'' % escape or ''),
})
class SQLBase7Dialect_SA05(SQLBase7Dialect): class SQLBase7Dialect_SA05(SQLBase7Dialect):
statement_compiler = SQLBase7Compiler_SA05
@classmethod @classmethod
def dbapi(cls): def dbapi(cls):
import pyodbc import pyodbc