定义自定义功能元素似乎是处理该
group_concat方法的最简单方法。
from sqlalchemy.sql import expressionimport sqlalchemyfrom sqlalchemy.ext import compilerclass group_concat(expression.FunctionElement): name = "group_concat"@compiler.compiles(group_concat, 'mysql')def _group_concat_mysql(element, compiler, **kw): if len(element.clauses) == 2: separator = compiler.process(element.clauses.clauses[1]) else: separator = ',' return 'GROUP_CONCAt(%s SEPARATOR %s)'.format( compiler.process(element.clauses.clauses[0]), separator, )
并使用像这样的东西:
query = select([ table.c.some_column, expression.label( 'grouped column', group_concat( table.c.some_oter_column, ' separator ', ), ),]).group_by(table.c.some_column)



