@compiles方法必须返回一个字符串。另外,Index在这里如何遍历函数元素也存在一些故障,因此我们需要一个小解决方法:
class CaseInsensitive(FunctionElement): __visit_name__ = 'notacolumn' name = 'CaseInsensitive' type = VARCHAr()@compiles(CaseInsensitive, 'sqlite')def case_insensitive_sqlite(element, compiler, **kw): arg1, = list(element.clauses) return compiler.process(collate(arg1, 'nocase'), **kw)@compiles(CaseInsensitive, 'postgresql')def case_insensitive_postgresql(element, compiler, **kw): arg1, = list(element.clauses) return compiler.process(func.lower(arg1), **kw)



