【问题标题】:How do you write MySQL query using JSON_OBJECTAGG on SQLAlchemy's SQL Expression Language?如何在 SQLAlchemy SQL 表达式语言中使用 JSON_OBJECT 编写 MySQL 查询?
【发布时间】:2019-08-04 19:52:39
【问题描述】:

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

问题

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

【问题讨论】:

标签: python mysql sqlalchemy mysql-8.0


【解决方案1】:

对于可以使用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 不能用于使用命名符号轻松生成函数调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-06
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多