Как вы пишете запрос MySQL, используя JSON_OBJECTAGG на языке выражений SQLAlchemy? - PullRequest
0 голосов
/ 14 марта 2019

Я использую SQLAlchemy на MySQL 8.0. Я пытаюсь составить запрос, который использует JSON_OBJECTAGG функцию на языке выражений SQL. Поскольку это предопределенная функция в MySQL, мне интересно, есть ли канонический способ для достижения этой цели.

Вопрос

  • Каков рекомендуемый способ составления запроса с использованием функции JSON_OBJECTAGG на языке выражений SQL?

1 Ответ

0 голосов
/ 14 марта 2019

Нет ограничений 1 на то, какие функции SQL можно вызывать с помощью func. Приведенный пример из документации MySQL :

mysql> SELECT o_id, attribute, value FROM t3;
+------+-----------+--------+
| o_id | attribute | value  |
+------+-----------+--------+
|    2 | color     | red    |
|    2 | fabric    | silk   |
|    3 | color     | green  |
|    3 | shape     | square |
+------+-----------+--------+
4 rows in set (0.00 sec)

запрос:

SELECT o_id, JSON_OBJECTAGG(attribute, value)
   FROM t3 GROUP BY o_id;

будет выражаться в SQLAlchemy Язык выражений SQL как:

select([t3.c.o_id, func.json_objectagg(t3.c.attribute, t3.c.value)]).\
    group_by(t3.c.o_id)

1 На практике существуют некоторые ограничения. func нельзя использовать, например, для генерации вызовов функций с использованием именованных обозначений.

...