Os resultados SQL são (multi) conjuntos e, como tal, não têm ordenação, a menos que você defina explicitamente um. Isso se aplica a linhas de grupo produzidas por
GROUP BY
também; não há ordem dentro dos grupos e, portanto, os agregados recebem valores em qualquer ordem em que a consulta atual, dependendo do plano, layout físico, agendamento etc., produza. A solução é definir explicitamente o encomenda
:func.group_concat(t.name.op("ORDER BY")(t.name))
Isso usa uma função de operador genérico para produzir a sintaxe SQL necessária. SQLAlchemy fornece o
aggregate_order_by
helper para a mesma sintaxe, mas é fornecido apenas para o dialeto Postgresql.