如何在SQLAlchemy的SQL表达式语言上使用JSON_OBJECTAGG编写MySQL查询?

时间:2019-03-14 01:42:19

标签: python mysql sqlalchemy mysql-8.0

我在MySQL 8.0上使用SQLAlchemy。 我正在尝试编写一个在SQL表达式语言上使用JSON_OBJECTAGG函数的查询。 由于它是MySQL中的预定义函数,所以我想知道是否存在实现此目的的规范方法。

问题

  • 在SQL表达式语言上使用JSON_OBJECTAGG函数组成查询的推荐方法是什么?

1 个答案:

答案 0 :(得分:0)

使用func可以调用什么SQL函数没有限制 1 。给定MySQL documentation中的示例:

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 Expression Language中将表示为:

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

1 实际上有一些限制。例如,func不能轻松地使用命名符号来生成函数调用。