SQLAlchemy中具有方便格式的SELECT

时间:2017-04-28 13:13:28

标签: python sqlalchemy

我是SqlAlchemy的新人,我正在寻找类似的东西:

表格

CATEGORY VALUE     ORDER
cat_1    val_11       1
cat_1    val_12       2
cat_2    val_21       1
cat_1    val_13       3
cat_3    val_31       1

convenint检索结果: {"cat_1": (val11, val12, val13), "cat_2": (val_21), "cat_3": (val_31)}

我试图避免使用不同的类别编写查询,然后按类别迭代类别列表查询值

1 个答案:

答案 0 :(得分:1)

MySql没有数组类型(与大多数其他RDBMS系统不同),因此无法将列聚合为数组。

在mysql中最接近的事情是使用group_concat函数,该函数返回逗号分隔列表(或者您可以指定自定义分隔符)

from sqlalchemy import func
q = session.query(
  Table.category, 
  func.group_concat(Table.value).label('group_values')
).group_by(Table.category).all()

然后,迭代结果集&将字符串拆分为python中的列表。